12
dic
07

Conectar a través de ssh sin password con expect


Fuente: LinuTeca

El comando expect surgió para controlar de forma automática aplicaciones interactivas que requerían una o varias entradas por parte del usuario por teclado y hacían lentas las ejecuciones o pruebas. El caso que expongo a continuación es el de la conexión a través de ssh que al introducir el comando, nos pide el password, y a no ser que hayamos hecho un intercambio de claves públicas, es bastante molesto introducirlo en cada conexión. Para no perder el tiempo, qué mejor que un script con el comando expect.

Expect básicamente consiste en ponerse a la escucha de los comandos que salen por pantalla y cuando captura uno que sigue un patrón establecido por el usuario ejecuta un comando o manda un mensaje al programa. En nuestro caso expect estará a la espera de que aparezca en pantalla el patrón “assword: ” (sin la p, porque en unos sistemas es en mayúsculas y en otros en minúsculas), y cuando eso ocurra mandaremos el mensaje al programa con nuestro password más un ’salto de línea’.

Con esto ya estremos dentro del sistema y podremos ejecutar los comandos que queramos.

Como última anotación antes de poner el ejemplo, solo decir, que para que funcione este comando hay que instalar el paquete expect en algunas distribuciones como Ubuntu:

sudo apt-get install expect

Aquí os dejo un script ejemplo de conexión por ssh y ejecución de comandos:

#!/usr/bin/expect -fset timeout 30
#ejemplo de como pasar parametros al ejecutarlo
set server [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]
send_user “Conectando con $server\n”
spawn ssh $user@$server
#Conectamos en estos casos:
# login con las claves RSA (sin user/pass)
# login con user/pass
# login con user/pass (con la verificacion de las claves RSA)
expect {
“> ” { }
“$ ” { }
“assword: ” {
send “$pass\n”
expect {
“> ” { }
“$ ” { }
}
}
“(yes/no)? ” {
send “yes\n”
expect {
“> ” { }
“$ ” { }
}
}
default {
send_user “Falló el login\n”
exit
}
}
#ejemplo de ejecucion del comando ls
send “ls\n”
sleep 3
expect {
“> ” {}
default {}
}
#Salir
send “exit\n”
expect {
“> ” {}
default {}
}
send_user “Finalizado\n”

A primera vista puede parecer complicado el cógido pero realmente es muy simple, usamos el comando spawn para poner a la escucha un programa, el comando expect para hacer un acción cuando el programa escribe en pantalla, y el comando send para devolver la cadena deseada.

Para más información sobre el comando expect en la sección de manuales encontraréis los necesario.

About these ads

2 Respuestas a “Conectar a través de ssh sin password con expect”


  1. 1 AISKELLY RODRIGUEZ
    2010/10/11 en 6:48 pm

    bUENAS TARDES, QUISIERA HACERTE UNA PREGUNTICA, COMO PUEDO COLOCAR CARACTERES ESPECIALES COMO $ DENTRO DEL PASSWORD, COMO POR EJEMPLO U$O

  2. 2 JuanKa
    2012/06/27 en 11:53 am

    Parece muy bueno pero no puedo copiar el texto directamente, aparecen muchos caracteres ASCII. ¿Y un link al texto en plano? Muchas gracias


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Conectando a %s


Contacto

Cuestiones, sugerencias, criticas,...

Manual LyX: Con “L” de LaTeX


Descarga el manual LyX

Ya van más de 8750 descargas.
¿A qué esperas? (Español, 1.1Mb)

Instala la nueva LyX 2.0.0 Final

Aprender LyX


Descarga el manual LyX

Ubuntu 12.10 LTS “Quantal Quetzal”

Firefox 4

Firefox 4

Ciencia Sin Tijeras

No al recorte en I+D

Feed RSS

Feed RSS



To translate / Traduire

Frases

Busco frases para realizar una colección sobre Linux, software libre e informática en general
diciembre 2007
L M X J V S D
« nov   ene »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

En twitter

Han pasado (+130000)

  • 890,363 bioinformatiquillos

Archivos

USE FIREFOX

No al soporte gratuito a Microsoft

No use Windows, los gatitos se la agradecerán

Creative Commons License

Esta obra está bajo una licencia de Creative Commons.


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 232 seguidores

%d bloggers like this: