spawn_id:spawn id exp6未打开

时间:2011-09-20 19:24:29

标签: linux shell scripting expect

我知道这个问题已在此处提及,但解决方案对我不起作用。

我有这个脚本(让我们把它命名为myscript.sh),它在远程环境中生成一个进程并且应该与它进行交互。

#!/usr/bin/expect
log_user 0
set timeout 10
spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1]
expect "password:" {send "mypassword\r"}
expect "Continue to run (y/n)" {send "n\r"}
interact

当我在本地环境中调用此脚本时......

myscript.sh user@host "command1;./command2 parameter1 parameter2"

我在第7行遇到了上述错误(互动)

任何想法??

4 个答案:

答案 0 :(得分:2)

我怀疑期望无法找到(匹配)您发送的模式。

expect "password:" {send "mypassword\r"}
expect "Continue to run (y/n)" {send "n\r"}

再次检查"密码:"和"继续运行(y / n)"是正确的CAPS。

如果仍然出现相同的错误,您可以尝试使用正则表达式。

答案 1 :(得分:0)

尝试在没有脚本的情况下执行正常的ssh。看看它是否有效。有时远程主机标识会更改,主机会有新的ip或新密钥。然后,使用ssh-keygen -f ~/.ssh/known_hosts -R old_host或类似内容删除旧密钥会有所帮助。

答案 2 :(得分:0)

我遇到了这个问题,原因在于使用错误的端口。

答案 3 :(得分:0)

我也遇到了这个问题,但这是由于我为不相关的项目创建/编辑了以下文件:

~/.ssh/config

一旦我删除了所有脚本,我的所有脚本便开始工作,而我的期望文件也不再存在该问题。