Enviar comandos por ssh a un switch CISCO mediante expect
Mediante expect podemos programar acciones en programas interactivos. Vamos a ver un ejemplo usando una conexión por ssh a un switch CISCO para hacer un show interfaces.
Una sesión de ejemplo para hacer un show interfaces sería:
# ssh -l user 10.10.10.254 user@10.10.10.254's password: switch-cisco>terminal length 0 switch-cisco>show interfaces (...) switch-cisco>exit
En expect vamos a definir la interacción “me dicen”-”contesto”. Por ejemplo, cuando me dicen “password:” yo debo contestar la contraseña, supongamos “1234″, por lo que se definiría así:
expect "password:" send "1234\r"
Esto funcionaría igual para el caso de querer hacer el show interfaces. Cuando me digan “>” contesto con “show interfaces“:
expect ">" send "show interfaces\r"
Evidentemente falta establecer la conexión por ssh, esto lo hacemos mediante la palabra clave spawn: Esta indica que comando ejecutamos con el cual vamos a establecer la comunicación que hemos definido. Todo junto en un solo script sería:
#!/usr/bin/expect spawn ssh -l user $argv expect "password:" send "1234\r" expect ">" send "terminal length 0\r" expect ">" send "show interfaces\r" expect ">" send "exit\r" expect eof
La variable $argv indica que use los parámetros que le pasamos, por lo que si lo ejecutamos así:
$ ./show_interfaces_cisco 10.10.10.254
Se conectará a switch 10.10.10.254 para hacerle el show interfaces.
Relacionados
Imprimir
27. January 2009 at 8:39 am :
Hola,
gracias por tu artículo.
Por mi experiencia te puedo decir que para que un linux pueda conectarse por ssh a un Cisco y no pelearte con el sistema … la key debe ser de al menos 768 bits. Es tan fácil como en el equipo Cisco generar una nueva key de 768 bits ya que por defecto te la genera de 512 :
Cisquito#configure terminal
Cisquito(config)#crypto key generate rsa
% You already have RSA keys defined named XXXXXX.
% Do you really want to replace them? [yes/no]: yes
Choose the size of the key modulus in the range of 360 to 2048 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take
a few minutes.
How many bits in the modulus [512]: 768
% Generating 768 bit RSA keys, keys will be non-exportable…[OK]
Saludos.