spawn_id:spawn id exp6未打开

我知道这个问题已经在这里提到,但是这个解决scheme对我来说并不合适。

我有这个脚本(让我们把它命名为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行得到上述错误(交互)

有任何想法吗??

我怀疑期望是不能找出(匹配)你发送的模式。

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

再次检查“密码:”和“继续运行(y / n)”的大小是否正确。

如果仍然得到相同的错误,你可以尝试使用正则表达式。

尝试做一个正常的SSH没有脚本。 看看它是否有效。 有时远程主机标识会改变,主机有一个新的ip或新的密钥。 然后用ssh-keygen -f ~/.ssh/known_hosts -R old_host或类似的东西来删除旧密钥。