我有以下期望脚本:
#!/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
脚本在问题“您想连接到此服务器吗?(是/否)”处停止,等待答案。
有人知道可能是什么问题吗?
答案1
Expect 就是完全按照您的指示去做。
您的interact
命令没有退出条件,因此此时脚本将控制权交给用户并且永远不会收回。
如果您需要在 Expect 脚本中间进行交互式访问,请参阅Stack Overflow.SE 中的这个问题。有多个可能适用的答案,具体取决于您希望脚本的行为方式。
如果脚本应该是完全自动化的,启动脚本后无需用户交互,那么为什么会有该interact
命令?