我有以下期望脚本:
#!/usr/bin/expect
set timeout 20
set cmd "/path/vpntool --server 1.2.3.4:443 --vpnuser user"
set password [lindex $argv 0]
eval spawn $cmd
expect "VPN:"
send "$password\r";
interact
expect ".*\(Y\/N\)"
send "Y\r";
interact
Run Code Online (Sandbox Code Playgroud)
脚本在问题“您想连接到此服务器吗?(是/否)”处停止等待答案。
有谁知道可能是什么问题?
Expect 完全按照您的要求执行。
您的interact
命令没有退出条件,因此此时脚本将控制权交给用户,并且永远不会收回。
如果您需要在 Expect 脚本中间进行交互式访问,请参阅Stack Overflow.SE 中的这个问题。有多个可能适用的答案,具体取决于您希望脚本的行为方式。
如果脚本应该在启动脚本后完全自动化而无需用户交互,那么为什么会出现该interact
命令?