我正在运行一个应用程序,它提示用户输入密码大约12次:-(我尝试使用expect来绕过这个问题,并使其在自动模式下运行,但无法克服多次密码的问题,这不是完全静态的。有时它会问4-5次,有时会问9-10次。
有没有比我下面给出的更好的解决方案:
spawn myApp [lindex $argv 0]
expect " password: $"
send "$password\r"
expect {
" password: $" send "$password\r"
"^Rollout Done "
"^Rollout Updated "
}使用上面的解决方案,我只能捕获密码两次,然后在剩下的时间里手动开始输入,密码是否可能出现循环?
发布于 2009-06-03 22:06:48
查找exp_continue命令--它阻止当前的[expect]命令返回,因此它可以找到任何后续的密码提示。
spawn myApp [lindex $argv 0]
expect {
-re { password: $} {
send "$password\r"
exp_continue
}
-re {^Rollout (?:Done|Updated) }
}如果希望用户输入口令,而不是以纯文本形式存储在脚本中,请参见How can I make an expect script prompt for a password?
发布于 2009-06-03 18:32:18
Expect可以使用循环--我相信它只是带有一些附加命令的TCL。所以就这么做吧
set found 0
while {$found < 1}
{
expect {
" password: $" send "$password\r"
"^Rollout Done " set found 1
"^Rollout Updated " set found 1
}
}https://stackoverflow.com/questions/945998
复制相似问题