Introduzca contraseña varias veces
Pregunta
Estoy corriendo una aplicación, que solicita una contraseña de usuario sobre una docena de veces :-( He intentado utilizar esperar para eludir este problema y hacer que se ejecute en el modo automático, pero soy incapaz de superar el problema de la contraseña varias veces, lo que no es exactamente estática. A veces se pide a 4-5 veces y en algún momento alrededor de 9-10 veces.
¿Hay una mejor solución al problema de lo que he dado a continuación:
spawn myApp [lindex $argv 0]
expect " password: $"
send "$password\r"
expect {
" password: $" send "$password\r"
"^Rollout Done "
"^Rollout Updated "
}
Con la solución anterior, que sólo han sido capaces de atrapar la contraseña dos veces y luego comenzar a introducir manualmente por el resto de las veces, no es posible un bucle con la contraseña?
Solución
Busque el href="http://wiki.tcl.tk/16158" rel="nofollow noreferrer"> exp_continue comando - evita que el comando actual [expect]
de volver, por lo que puede encontrar solicitudes de contraseña posteriores.
spawn myApp [lindex $argv 0]
expect {
-re { password: $} {
send "$password\r"
exp_continue
}
-re {^Rollout (?:Done|Updated) }
}
Si desea que el usuario introduzca la contraseña, en lugar de almacenarla en texto plano en el guión, consulte ¿Cómo puedo hacer un símbolo esperar guión de una contraseña?
Otros consejos
esperar puede utilizar bucles - es sólo TCL con algunos comandos adicionales, creo. Así que acaba de hacer
set found 0
while {$found < 1}
{
expect {
" password: $" send "$password\r"
"^Rollout Done " set found 1
"^Rollout Updated " set found 1
}
}