DEV Community

Aleets Vaaz
Aleets Vaaz

Posted on

Automatización de Cisco con Python

La automatización de dispositivos de red, como routers y switches Cisco, se puede lograr fácilmente utilizando Python con la librería Netmiko, diseñada para manejar conexiones SSH de forma sencilla. A continuación, te muestro dos scripts básicos para visualizar la configuración de un dispositivo Cisco y para automatizar la creación y configuración de VLANs.

1. Script para ver la configuración de un dispositivo Cisco (router):

from netmiko import ConnectHandler
ssh=ConnectHandler(
    device_type="cisco_ios",
    host="192.168.0.10",
    port=22,
    username="cisco",
    password="cisco"
)
out=ssh.send_command("show run")
print(ssh.find_prompt())
print("show run:\n"+out)
Enter fullscreen mode Exit fullscreen mode

Funcionamiento:

  • Importación de Netmiko: Se importa la clase ConnectHandler para manejar la conexión SSH.
  • Conexión SSH: Utilizando la IP, el puerto y las credenciales del dispositivo Cisco, se crea una conexión.
  • Ejecución de comandos: Se envía el comando show runpara obtener la configuración actual del dispositivo.
  • Impresión del prompt: Se imprime el prompt del dispositivo, que indica que la conexión sigue activa.
  • Visualización de la configuración: El resultado del comando se imprime mostrando la configuración en ejecución.

Este script es útil para realizar consultas rápidas de configuración en dispositivos Cisco de manera automatizada.

2. Script para crear, configurar y asignar direcciones IP a VLANs:

from netmiko import ConnectHandler

ssh = ConnectHandler(
    device_type="cisco_ios",
    host="192.168.10.2",
    port=22,
    username="womar1",
    password="womar"
)
ssh.enable()
comandos = [
    "hostname uwu",
    "vlan 10",
    "interface vlan 10",
    "ip address 192.168.2.1 255.255.255.0",
    "no shutdown",
    'interface range fa0/1 - 5',  # Corrección aquí
    "switchport mode access",
    'switchport access vlan 10',
    "vlan 20",
    "interface vlan 20",
    "ip address 192.168.3.1 255.255.255.0",
    "no shutdown",
    'interface range fa0/6 - 10',  # Corrección aquí
    "switchport mode access",
    'switchport access vlan 20',
    "vlan 10",
    "interface vlan 30",
    "ip address 192.168.4.1 255.255.255.0",
    "no shutdown",
    'interface range fa0/11 - 15',  # Corrección aquí
    "switchport mode access",
    'switchport access vlan 30',
    "vlan 10",
    "interface vlan 40",
    "ip address 192.168.5.1 255.255.255.0",
    "no shutdown",
    'interface range fa0/16 - 20',  # Corrección aquí
    "switchport mode access",
    'switchport access vlan 40',
    "vlan 50",
    "interface vlan 50",
    "ip address 192.168.200.1 255.255.240.0",
    "no shutdown",
    'interface range fa0/21 - 22',  # Corrección aquí
    "switchport mode access",
    'switchport access vlan 50',



]
ssh.send_config_set(comandos)
configuracion = ssh.send_command("show run")
comands = ssh.find_prompt()

print(comands)
print("show run:\n" + configuracion)
Enter fullscreen mode Exit fullscreen mode

Funcionamiento:

  • Conexión y modo privilegiado: Se establece una conexión SSH y se cambia al modo privilegiado con ssh.enable().
  • Lista de comandos: Se crean varias VLANs, se asignan interfaces y direcciones IP a estas VLANs, y se configuran los puertos en modo de acceso (switchport mode access).
  • Aplicación de la configuración: Los comandos se envían en bloque con ssh.send_config_set().
  • Verificación de la configuración: Se utiliza el comando show run para obtener la configuración actual del dispositivo.
  • Impresión del resultado: Se imprime el prompt del dispositivo y la configuración resultante.

Este script es ideal para automatizar la configuración de VLANs y asignar IPs a interfaces, facilitando la administración de redes complejas de manera rápida y eficiente.

Recursos necesarios:
Antes de comenzar a automatizar la configuración de dispositivos Cisco utilizando Python, es importante asegurarse de tener el entorno adecuado. Aquí te detallo los recursos y herramientas que necesitarás:

1. Instalación de Python y Librerías

Debes tener Python 3.6 o superior instalado en tu sistema. Si no lo tienes aún, puedes instalarlo fácilmente dependiendo de tu sistema operativo.

Para interactuar con dispositivos Cisco de forma automatizada, utilizamos Netmiko, una librería Python que facilita la conexión SSH a routers y switches.

  • Netmiko: Es la librería principal que utilizamos para conectarnos a dispositivos de red (como routers o switches) a través de SSH.
  • Paramiko: Netmiko depende de esta librería, que es un cliente SSH en Python.
  • PIP: Es el gestor de paquetes de Python y lo necesitas para instalar las librerías.

2. Instalación de las Librerías

Para instalar Netmiko y sus dependencias (incluyendo Paramiko), ejecuta el siguiente comando en tu terminal:

pip install netmiko
Enter fullscreen mode Exit fullscreen mode

Este comando descargará e instalará Netmiko junto con sus dependencias necesarias. Una vez finalizado, puedes comprobar que todo se ha instalado correctamente usando:

pip list
Enter fullscreen mode Exit fullscreen mode

Esto te mostrará todas las librerías instaladas, entre ellas deberías ver netmiko y paramiko.

3. Acceso SSH a los Dispositivos Cisco

Además de las librerías instaladas, necesitas asegurarte de que el dispositivo Cisco (router o switch) esté configurado para aceptar conexiones SSH. A continuación, algunos puntos clave para habilitar el acceso:

a) Habilitar SSH en el dispositivo Cisco:

configure terminal
ip domain-name cisco.local
crypto key generate rsa
username cisco privilege 15 secret cisco
line vty 0 4
transport input ssh
login local
exit
Enter fullscreen mode Exit fullscreen mode

b) Verificar las credenciales y la IP:

  • Asegúrate de tener las credenciales correctas (usuario y contraseña) y que la dirección IP del dispositivo sea accesible desde la máquina donde ejecutarás los scripts Python.

Con estas configuraciones, ya estarás listo para ejecutar scripts y automatizar tareas en dispositivos Cisco usando Python.

Conclusión

Con los recursos adecuados (Python, Netmiko, SSH habilitado en los dispositivos Cisco) y las librerías necesarias instaladas, estarás listo para comenzar a automatizar la configuración y gestión de tus dispositivos de red utilizando Python. Netmiko facilita la conexión y ejecución de comandos en estos dispositivos, lo que simplifica tareas repetitivas y mejora la eficiencia en la administración de redes.

Top comments (0)