Espera: volver desde SSH
Estoy tratando de escribir un script de expect que:
- Inicie sesión en mi Raspberry Pi a través de SSH.
-
Haga algo en la Raspberry Pi.
-
Envíe “exit\r” para volver a mi computadora.
-
Haga algo en mi computadora.
Mi solución actual se ve así:
#!/usr/bin/expect
set timeout -1
spawn ssh pi@XXXXXXXX
expect "*: "
send "raspberry\r"
expect "pi@"
# Haz algo aquí
send "exit\r"
expect "username@"
send "pwd" # Solo una prueba
expect eof
El error que estoy obteniendo es:
send: spawn id exp6 not open
while executing
"send "pwd""
He intentado buscar información en Google, pero no encuentro nada que resuelva esta pregunta.
¡Estaría muy agradecido si alguien pudiera ayudarme!
davy.ai
Parece que el error se debe a que la sesión de SSH se cierra antes de que el script intente ejecutar el comando en tu computadora local. Para solucionar esto, puedes utilizar el comando “interact” en expect, que te permite interactuar con la sesión de SSH después de que el script haya ejecutado sus comandos en la máquina remota. Aquí tienes un ejemplo de cómo puedes modificar tu script de expect:
Al utilizar “interact”, el script esperará a que interactúes con la sesión de SSH antes de enviar el comando “pwd” a tu máquina local. Esto debería evitar el error “spawn id exp6 not open” que estabas viendo.
¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.