【发布时间】:2014-10-14 02:53:09
【问题描述】:
我正在尝试使用将使用密码登录的期望脚本通过 ssh 远程执行命令。到目前为止,我有以下脚本(当然细节有所改变):
#!/usr/bin/expect
spawn ssh user1@cpu3.lab.ie
expect "password:"
send "psw123\r"
expect "$"
send "mkdir pswdtest\r"
我将此脚本命名为testpswd.sh,然后运行chmod +x testpswd.sh、d2u testpswd.sh 和./testpswd.sh。
显然脚本设法登录,因为我得到了Last login:... 提示。但是,在此之后,脚本似乎要等待一段时间,然后退出 ssh,而不创建一个名为 pswdtest 的目录(我可以稍后检查)。
我已经尝试查找教程等并以我能想到的所有方式更改上面的脚本,例如expect "user1@cpu3:~$"而不是expect "$"等等。
我正在运行 Windows 并使用 cygwin(因此是 d2u),而我正在登录的网络使用 Linux。
有什么想法吗?
【问题讨论】:
-
在开发期望脚本时,请始终在脚本顶部添加
exp_internal 1:期望会显示匹配(或不匹配)的内容。
标签: linux shell ssh cygwin expect