es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Espera: volver desde SSH

Estoy tratando de escribir un script de expect que:

  1. Inicie sesión en mi Raspberry Pi a través de SSH.

  2. Haga algo en la Raspberry Pi.

  3. Envíe “exit\r” para volver a mi computadora.

  4. 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!

Tags:  , ,

Answer

  1. Avatar for 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:

    #!/usr/bin/expect
    set timeout -1
    
    spawn ssh pi@XXXXXXXX
    expect "*: "
    send "raspberry\r"
    
    expect "pi@"
    # Haz algo aquí
    send "exit\r"
    
    interact # Te permite interactuar con la sesión de SSH
    send "pwd\r" # Ejecuta el comando en tu computadora local
    
    expect eof
    

    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.

Comments are closed.