systemadmin.es > Redes > Enviar comandos por ssh a un switch CISCO mediante expect

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.

One comment to “Enviar comandos por ssh a un switch CISCO mediante expect”

  1. 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.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>