Digite a senha várias vezes
Pergunta
Estou executando um aplicativo, que solicitará uma senha do usuário sobre uma dúzia de vezes :-( Eu tentei usar esperar para contornar este problema, e fazê-lo funcionar no modo automático, mas sou incapaz de superar o problema da senha várias vezes, que não é exatamente estática. Às vezes ele pede 4-5 vezes e por volta de 9-10 vezes.
Existe uma melhor solução para o problema do que aquilo que tenho dado abaixo:
spawn myApp [lindex $argv 0]
expect " password: $"
send "$password\r"
expect {
" password: $" send "$password\r"
"^Rollout Done "
"^Rollout Updated "
}
Com a solução acima, eu só foi capaz de pegar a senha duas vezes e, em seguida, iniciar manualmente entrar para o resto do tempo, existe um loop possível com a senha?
Solução
Procure o href="http://wiki.tcl.tk/16158" rel="nofollow noreferrer"> comando - impede que o comando atual [expect]
de retornar, para que ele possa encontrar todas as instruções subsequentes senha.
spawn myApp [lindex $argv 0]
expect {
-re { password: $} {
send "$password\r"
exp_continue
}
-re {^Rollout (?:Done|Updated) }
}
Se você quiser que o usuário digite a senha, em vez de armazená-lo em texto simples no script, veja Como posso fazer um esperar roteiro prompt para uma senha?
Outras dicas
Esperar pode usar laços - é apenas TCL com alguns comandos adicionados eu acredito. Então, basta fazer
set found 0
while {$found < 1}
{
expect {
" password: $" send "$password\r"
"^Rollout Done " set found 1
"^Rollout Updated " set found 1
}
}