Intenté leer sobre esto, pero no puedo entender por qué sucede.
Cuando Expect envía la contraseña, aparece como texto sin cifrar en el terminal y luego "Lo siento, inténtalo de nuevo". aparece.
El guión es el siguiente
#!/usr/bin/expect -f
spawn bash
send -- "sudo (many tasks)\r"
expect -exact "\[sudo\] password for elade: "
send -- "password\r"
expect -exact "[email protected]'s password: "
send -- "password\r"
expect "@"
send -- "echo Done; sleep 1; exit\r"
expect eof
La salida del terminal después de enviar la primera contraseña es:
[sudo] password for elade:
password
Sorry, try again.
Estoy usando Arch Linux y el emulador de terminal Konsole.
Respuesta1
Gracias por todos los aportes anteriores. Después de probar todas las sugerencias, el guión original de repente empezó a funcionar de nuevo. Cuando se me solicitó la contraseña, y la contraseña fue enviada por expect, no apareció en la terminal como antes y fue rechazada, se pasó de manera invisible a la terminal y se aceptó, como si estuviera escribiendo yo mismo.
Así que ejecuté el script varias veces y 1/10 de las veces persistió el mismo problema. Hay tres contraseñas diferentes que deben enviarse, y cuál "pasa" y cuál recibe "repetición" en el terminal y es rechazada parece aleatoria. No sé por qué sucede esto, pero sospecho que tiene poco que ver con Expect y el guión real.