【发布时间】:2011-09-20 19:24:28
【问题描述】:
我知道这里已经提到了这个问题,但是解决方案对我不起作用。
我有这个脚本(我们将其命名为 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 行(交互)收到上述错误
有什么想法吗??
【问题讨论】:
-
您将远程命令作为参数传递给 ssh,因此 ssh 会话将在远程命令完成时结束。不会有任何互动。
-
是的,但是该远程命令在“继续运行 (y/n)”得到输入之前不应结束。在传递“y\r”之后,它应该再运行大约 2 分钟......不应该交互命令将远程命令的输出转发到我的标准输出,直到执行结束?
-
您确定您正在以良好的状态进入[交互],而不仅仅是超时?你知道如何调试 Expect 对话吗?
-
1.以wiki.tcl.tk/3173开头; 2. 确保你已经解决了 Glenn 的观察。更多细节,当天晚些时候。
-
exp_internal 1 ;# 您将能够看到生成的进程中的内容。在尝试调试时也有 log_user 0 是......适得其反。
标签: linux shell scripting expect