我正在运行的应用程序,它会提示约十几次用户的密码:-( 我试着用希望来规避这一问题,并使它在自动模式下运行,但我无法拿到过多次密码,这是不完全静态的问题。有时它要求4-5倍和大约在9-10倍。

有没有更好的解决问题的办法比我有如下:

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

使用上述方案中,我只能够赶上密码两次,然后手动启动输入为的其余时间,是否有可能的环路与所述密码?

有帮助吗?

解决方案

中查找 exp_continue 命令 - 它防止电流[expect]命令从返回,因此它可以发现任何后续密码提示。

spawn myApp [lindex $argv 0]
expect {
    -re { password: $} {
        send "$password\r"
        exp_continue
    }
    -re {^Rollout (?:Done|Updated) }
}

如果您希望用户输入密码,而不是明文将其存储在脚本中,看到的我怎样才能使一个期望脚本提示输入密码?

其他提示

预计可使用循环 - 它只是TCL增加了一些命令我相信。所以只是做

set found 0
while {$found < 1}
{
expect {
 " password: $"    send "$password\r"
 "^Rollout Done "  set found 1
 "^Rollout Updated " set found 1
}
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top