Usando Expect

*. Vamos a ver unos ejemplos de como podriamos usar este comando.*
*. Con el expect vamos a poder automatizar tareas utilizando las siguientes aplicaciones telnet, ftp, passwd, fsck, rlogin, tip, ssh, entre otros usos este es el mas particular.*
Para mas info : Expect

*. Ahora si empezamos haciendo una conexion remota con ssh pasandole la clave y ejecuntado una serie de comandos.*

#!/usr/bin/expect

#Setear valores para mi automatizacion
set timeout 1
#el tiempo de respuesta

set user {educacionit}
#Seteo el usuario

set host {172.16.199.167}
#Seteo el equipo

set password {educacionit}
#Seteo password

set cmd {uname -a}
#que ejecuta cuando manda cmd

spawn ssh $user@$host
#adonde me conecto

expect_after eof { exit 0 }
#que hacer despues de terminar

## Interactuando con ssh

expect "yes/no" { send "yes\r" }
#si entro por primera vez

expect "password:" { send "$password\r" }
#mando passwd

expect "$ "
#espero despues del password un prompt

send "$cmd\r"
#mando el comando

expect "$cmd\r"
#espero la salida del comando

expect "(.*)\r"
#espero cualquiera valor idem *

send "exit\r"
#mando salida

*. Aca podemos ver como nos conecta.*

stationx:~# ./.conectar3
spawn ssh root@172.16.199.167
root@172.16.199.167's password:
Linux stationx 2.6.26-2-686 #1 SMP Tue Mar 9 17:35:51 UTC 2010 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 22 01:59:15 2010 from 172.16.199.168
stationy:~# uname -a
Linux stationy 2.6.26-2-686 #1 SMP Tue Mar 9 17:35:51 UTC 2010 i686 GNU/Linux
stationy:~# stationx:~#

*. Luego vemos que finaliza la conexion y estamos devuelta en nuestro equipo.*
*. Imaginense la cantidad de cosas que pueden hacer.. esto es tan solo un ejemplo.*

*.Otro ejemplo de como podemos usar el expect pero usando el shebang #!/bin/bash.*

stationx:~# cat .conectar
#!/bin/bash

#HOST="remote-hostname"
#USER="remote-user"
#PASS="remore-user-password"
#CMD=$@

HOST="172.16.199.167"
USER="educacionit"
PASS="educacionit"
CMD=$@
VAR=$(expect -c "
spawn ssh -o StrictHostKeyChecking=no $USER@$HOST $CMD
match_max 100000
expect \"*?assword:*\"
send -- \"$PASS\r\"
expect \"$ \"
#send -- \"\r\"
send \"ls -la\r\"
expect \".*\"
send \"exit\r\"
expect eof
")
echo "==============="
echo "$VAR"
stationx:~#

*.Fuentes.*

  Ejemplo 1
Ejemplo 2
Ejemplo 3


Share
This entry was posted in Scripting and tagged , . Bookmark the permalink.

Leave a Reply