Ожидайте сценарий, который вводит имя пользователя и пароль повторно - PullRequest
0 голосов
/ 21 декабря 2010

У меня есть скрипт, который должен переключаться между различными ветками в моем хранилище Subversion, чтобы сделать копию. Это приводит к необходимости повторного ввода пароля. Теперь, когда я сделал это пару раз, я хорошо разбираюсь в своем сценарии. Я запутался, вызывая у меня сильный гнев.

Я использовал ожидаю ввести пароль в приглашении раньше. Я надеялся узнать, как снова и снова запускать несколько запросов на ввод пароля, пока задача не будет завершена.

Пока это то, что у меня есть.

#!/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 ]

5 голосов
/ 21 декабря 2010

Задумывались ли вы об использовании ключей ssh ​​, чтобы вам не приходилось вводить пароль снова и снова?

2 голосов
/ 22 декабря 2010

Наивный, метод грубой силы:

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