【求助】请问如何把要输入的密码保存在bash脚本里?

复制内容到剪贴板
代码:
#!/bin/sh

menu()
{
        echo " Choose your operation:"
        echo " 1.transfer a file to remote"
        echo " 2.Remove a remote file"
        echo " 3.Other operation"
        echo " 4.Exit"
}

login()
{
        read -p "Enter remote IP:" ip
        read -p "Enter remote password:" password
}

while :;
do
        menu
        read -p "Enter choice: " choice
        case $choice in
                1)
                        echo "transfer a file to remote"
                        login

                        #利用ssh传输一个文件
                        ;;
                2)
                        echo "Remove a remote file"
                        login
                        #利用ssh删除远程的某个文件
                        ;;
                3)
                        login
                        #利用ssh远程执行命令
                        ;;
                4)
                        exit 0
                        ;;
                *)
                        echo " Ivalid choice!!!"
        esac
done
      
再不明白就没办法了:
复制内容到剪贴板
代码:
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]cat ssh.sh
#!/bin/bash
# vi:set ts=8 sw=4 et sta:
#
# Author: Wang Jian (dearvoid AT 263 DOT net)
#
# $Date: 2006-03-31 23:05:23 +0800 (Fri, 31 Mar 2006) $
# $HeadURL: svn://apple/clark/void/trunk/bash/template.sh $
# $Revision: 445 $
#

expect << END
set timeout 15
spawn ssh apple date
set bTimeout 0
expect {
    "yes/no" {
        send "yes\r"
        exp_continue
    }

    -nocase "password:" {
        send "MyPassword\r"
        expect {
            eof {
            }

            timeout {
                set bTimeout 1
            }
        }
    }

    timeout {
        set bTimeout 1
    }
}

if \$bTimeout {
    send_user "\\n>>> Error: timeout\\n"
    exit 1
} else {
    exit 0
}
END
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]./ssh.sh
spawn ssh apple date
Password:
Mon Apr 10 21:57:49 CST 2006
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]> ~/.ssh/known_hosts
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]./ssh.sh
spawn ssh apple date
The authenticity of host 'apple (192.168.2.1)' can't be established.
RSA key fingerprint is 14:93:87:f5:e8:95:7e:65:c3:d2:a6:2d:c6:61:2d:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'apple,192.168.2.1' (RSA) to the list of known hosts.
Password:
Mon Apr 10 21:58:08 CST 2006
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]
      
了解了,expect最后必须得exit。

谢谢超版      
[QUOTE=pink_tulip]了解了,expect最后必须得exit。

谢谢超版[/QUOTE]
exit 不是必须的 跟 Shell、C/C++、Perl、Python 等语言一样,程序末尾可以没有 explicit 的 exit      
[QUOTE=dearvoid]exit 不是必须的 跟 Shell、C/C++、Perl、Python 等语言一样,程序末尾可以没有 explicit 的 exit[/QUOTE]

sorry,发现是另一个问题。

expect  {     #正确

expect{       #错误

expect
{                     #错误      
很不习惯。。      
END还必须顶格写,不能缩进,版式好难看      
[QUOTE=pink_tulip]很不习惯...

END还必须顶格写,不能缩进,版式好难看[/QUOTE]建议调整一下心态       
d版能解释下<< END.......END的含义么?

还有
复制内容到剪贴板
代码:
expect << END
......
END
这段代码为啥不能放在一个循环里呢?Like this
复制内容到剪贴板
代码:
while :;
do
        expect << END
                ..............

END
done
syntax error: unexpected end of file      
传说中的HERE_DOCUMENT ?