Estoy luchando con el clásico problema de escribir la contraseña automáticamente en ssh, y al igual que todos los demás estoy dando tumbos en la oscuridad con respecto a lo esperado. Por último, me armó un guión que funciona un poco:exit expect {} sin tiempo de espera
#!/usr/bin/expect -f
# command line args
set user_at_host [lrange $argv 0 0]
set password [lrange $argv 1 1]
set timeout 1
# ssh command
spawn ssh -S ~/.ssh/tmp.$user_at_host -M -N -f $user_at_host
# deal with ssh prompts
expect {
"*yes/no*" { send "yes\r" ; exp_continue }
"*assword:" { send "$password\r" ; exp_continue }
}
Este script termina sólo gracias a la línea timeout 1
, sin él simplemente se cuelga, y terminará solamente por la interacción del usuario (^C
).
Cuando la línea spawn
era un comando ssh directo, el script finalizó de inmediato, sin embargo, esto es not your straight forward ssh. Lo que podría ser diferente es la opción -f
que lo hace funcionar en segundo plano (pero probé el script sin él en vano).
leí que interact
o expect eof
podría ayudar, pero no fue capaz de encontrar el encantamiento correcto que en realidad lo hará.
Mi pregunta (creo) es ¿Cómo hacer que un script esperado, que genere un proceso en segundo plano, termine sin tiempo de espera?
Editar: que debería haber esperado (sin doble sentido) la respuesta "utilizar la autenticación SSH sin contraseña". Si bien este es un buen consejo, no es la solución adecuada en mi escenario: probar automáticamente un sistema instalado de vanilla en un entorno confiable, donde agregar claves de confianza a la imagen no es deseable/posible.
¿Hay una manera de salir justo después de '* contraseña:'? Cuando traté de reemplazar el 'exp_continue' con cualquier otra cosa, salió inmediatamente, pero no parecía' enviar' la '$ {contraseña}'. –
¿Quizás un 'sueño 1' o' espera eof' o 'espera'? –
Disculpe por haberlo hecho, pero estoy rezagado, y quizás pueda ayudarme a disminuir el número de permutaciones que tengo que probar: ¿Debería 'esperar eof' /' dormir 1' estar dentro o fuera del 'expect {...} '" lazo "? –