Inserisci password più volte
Domanda
Sono in esecuzione di un'applicazione che richiede una password dell'utente circa una dozzina di volte :-( Ho provato ad utilizzare aspettiamo per aggirare questo problema, e farlo funzionare in modalità automatica, ma sono in grado di superare il problema della password più volte, che non è esattamente statica. A volte si chiede a 4-5 volte e intorno al 9-10 volte.
C'è una soluzione migliore al problema di quello che ho indicato di seguito:
spawn myApp [lindex $argv 0]
expect " password: $"
send "$password\r"
expect {
" password: $" send "$password\r"
"^Rollout Done "
"^Rollout Updated "
}
Con la soluzione di cui sopra, sono stato solo in grado di catturare la password due volte e poi manualmente iniziare a inserire per il resto del tempo, c'è un anello possibile con la password?
Soluzione
Cercare il href="http://wiki.tcl.tk/16158" rel="nofollow noreferrer"> exp_continue comando [expect] di tornare, in modo che possa trovare eventuali successive richieste di password.
spawn myApp [lindex $argv 0]
expect {
-re { password: $} {
send "$password\r"
exp_continue
}
-re {^Rollout (?:Done|Updated) }
}
Se si desidera che l'utente per immettere la password, invece di riporlo in testo normale nello script, vedere Come posso fare un prompt aspettarsi sceneggiatura per un password?
Altri suggerimenti
Si aspettano può usare loop - è solo TCL con alcuni comandi aggiunti credo. Quindi, basta fare
set found 0
while {$found < 1}
{
expect {
" password: $" send "$password\r"
"^Rollout Done " set found 1
"^Rollout Updated " set found 1
}
}