多次输入密码

时间:2009-06-03 17:23:09

标签: passwords expect unix

我正在运行一个应用程序,它会提示用户输入大约十几次密码:-( 我尝试使用expect绕过这个问题,并让它在自动模式下运行,但我无法克服多次密码的问题,这不是完全静态的。有时它要求4-5次,有时要求9-10次。

对于这个问题,有没有比我下面给出的更好的解决方案:

spawn myApp [lindex $argv 0]
expect " password: $"
send "$password\r"
expect {
  " password: $"    send "$password\r"
  "^Rollout Done "
  "^Rollout Updated "
}

通过上述解决方案,我只能捕获密码两次,然后在其余时间手动开始输入,是否可以使用密码进行循环?

2 个答案:

答案 0 :(得分:3)

查找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?

答案 1 :(得分:0)

Expect可以使用循环 - 它只是TCL,我相信一些额外的命令。所以就这样做

set found 0
while {$found < 1}
{
expect {
 " password: $"    send "$password\r"
 "^Rollout Done "  set found 1
 "^Rollout Updated " set found 1
}
}