我有一个脚本需要在我的subversion存储库中的各个分支之间切换才能进行复制。这导致必须重复输入密码。现在,一旦我完成了这几次,我就完成了我的脚本。我陷入困境,让我非常愤怒。
我曾经使用过expect来提示输入密码。我希望学习如何期望一次又一次地运行多个密码提示,直到任务完成。
到目前为止,这就是我所拥有的。
#!/usr/bin/expect
global env
set timeout 10
spawn command that requires password
expect "^user"
send "password\r"
#i need this to repeat over and over until the prompt stops showing up.
请,谢谢你。
答案 0 :(得分:5)
您是否考虑过使用ssh keys,因此您无需反复输入密码?
答案 1 :(得分:2)
朴素,蛮力方法:
while 1 {
expect $prompt
send $password\r
}
更好:
expect {
$prompt {
send $password\r
exp_continue
}
timeout {
puts "haven't seen prompt for $timeout seconds"
}
"some pattern that indicates password no longer required"
}
puts "continuing ..."