非常期待和寻找关于这个的一些建议:
我正在尝试ssh到服务器并执行一些命令。
如果服务器是我第一次登录的服务器,它会提示我是否要信任它。我选择"是&#34 ;;这就是为什么我有第一个期望的原因 第二个期望是密码。
expect { "yes/no" { send "yes\n" } "assword: " { send "$mypass\n" } }
expect "yes/no" { send "yes\n" } expect "assword: " { send "$mypass\n" }
我想知道设置它的正确方法。
答案 0 :(得分:1)
当您将其拆分为2个单独的命令时,您强制脚本首先查找"是/否"提示。它将等待$ timeout秒(默认为10秒)。只有这样才能找到密码提示。
您的第一个想法是正确的方法,但您缺少一个关键命令:
expect {
"yes/no" {
send "yes\r"
exp_continue ;# <== this
}
"assword: " {
send "$mypass\r"
}
}
exp_continue
命令实质上强制执行流程保留在expect命令中,因此您仍然可以匹配密码提示。
一个小问题:惯用,使用\r
(回车)作为&#34;点击Enter&#34;的字符。
要进一步学习,请查看expect标记以获取更多信息以及指向其他问题和答案的链接。