期望重复输入用户名和密码的脚本

时间:2010-12-21 16:04:45

标签: regex svn git ssh expect

我有一个脚本需要在我的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.

请,谢谢你。

2 个答案:

答案 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 ..."