Sé que preguntas como esta se han hecho antes, y las he leído todas (que encontré).
El problema que tengo es que tenemos un dispositivo Linux incorporado en el que podemos iniciar sesión para fines de depuración haciendo lo siguiente:
ssh root@name
Entonces la contraseña es cualquier cosa (generalmente presiono enter). No quiero cambiar nada en el dispositivo embebido / linux. Pero sí quiero poder (como parte de mi script) ssh en él.
Mi investigación me ha demostrado que se puede usar lo siguiente (esto se copia de otra publicación):
#!/usr/bin/expect -f
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact
Sin embargo, con mi versión de Ubuntu (10.04) no tengo spawn o envío de comandos. Pude instalar el comando "esperar" con sudo apt-get install expect.
¿Alguien tiene una solución? ¿Es posible instalar estos comandos o hay otra forma de ssh y superar el paso de "contraseña"?
Gracias :)
------------- EDITAR -----------------
Creo que estoy empezando a entender el problema que estoy teniendo. Tengo un script que comienza con:
#!/bin/bash
Luego más tarde estoy tratando de hacer:
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact
No me di cuenta de que necesitabas explícitamente:
#!/usr/bin/expect -f
Al comienzo del guión. así que tuve que mover mi código a un archivo separado que contiene solo y exactamente:
#!/usr/bin/expect -f
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact
... perdón por la mala comprensión de mi parte, pero las respuestas de las personas me ayudaron a explicar lo que estaba haciendo. Esto no es ideal para mí, ya que quería pasar parámetros para abrir diferentes conexiones ssh y no puedo pasar parámetros a este script que comience con "expect -f" :(
program 'send' can be found in the following packages: mailutils-mh, nmh
. ¿Qué estoy haciendo mal allí?Respuestas:
Creo que estás intentando ejecutar tu script como un script de shell. Después de la instalación
expect
, ejecute su script de esta manera:Si no puede instalar expectativa como usuario normal, intente instalar sus binarios en uno de sus directorios, por
$HOME
ejemplo,$HOME/opt/
y llameexpect
desde allí, aunque dependería de su sistema de cómo podría manipularLD_LIBRARY_PATH
para agregar otro directorio para buscar bibliotecas dinámicas.Un ejemplo de esperar incrustado:
Corre con
fuente