En la evolución de la administración de redes, la automatización ha surgido como una habilidad esencial. Aquí es donde entra en juego Netmiko, una biblioteca de Python multiplataforma que simplifica el proceso de configuración y manejo de dispositivos de red.
La biblioteca de Netmiko fue desarrollada por Kirk Byers, Netmiko es una herramienta diseñada para facilitar la interacción automatizada con dispositivos de red de múltiples fabricantes. Específicamente, Netmiko ayuda a los ingenieros de redes a enviar comandos a sus switches, routers y firewalls en una forma programática y repetible.
El principal propósito de Netmiko es ofrecer una manera simple y coherente de automatizar tareas de gestión de dispositivos de red, minimizando la necesidad de intervención manual y reduciendo el margen de error humano.
Netmiko soporta una amplia variedad de dispositivos de empresas líderes como Cisco, Juniper, Arista, HP, Avaya, y más. Se integra fácilmente con otras bibliotecas de Python y frameworks como Ansible, lo que permite a los usuarios crear poderosos scripts de automatización que pueden ejecutar tareas complejas en múltiples dispositivos con facilidad.

Casos de Uso
Configuraciones Masivas: Puedes utilizar Netmiko para hacer cambios de configuración en cientos de dispositivos de manera simultánea, asegurando consistencia y ahorrando tiempo.
Recopilación de Información: Extraer rápidamente información de la versión del software, configuraciones actuales o el estado de los puertos de numerosos dispositivos para propósitos de auditoría o diagnóstico.
Cambios de Red en Tiempo Real: Implementar cambios en tiempo real en la red durante ventanas de mantenimiento sin requerir acceso manual a cada dispositivo.
Integración y Desarrollo: Con Netmiko, los desarrolladores pueden escribir scripts personalizados o integrarlos en aplicaciones más grandes para interactuar con los dispositivos de red, todo ello mientras mantienen una base de código limpia y legible
Métodos en Netmiko:

Ejemplo de conexion a un Router Cisco:
Como ejemplo vamos usar la siguiente topologia:

El Router CSR tiene la siguente configuracion:
enable
configure terminal
!
hostname R1
ip domin name IT4ME
!
username netadmin privilege 15 secret netadmin
!
crypto key generate rsa modulus 2048
!
ip ssh verion 2
!
interface g1
no shutdown
ip add 192.168.202.100 255.255.255.0
!
line vty 0 4
login local
transport input ssh
!
En la maquina con Windos usaremos el software PyCharm:

https://www.jetbrains.com/pycharm/download/?section=windows
Creamos un nuevo proyecto llamdao netmiko_test


Ahora creamos un archivo con extensión py llamado netmiko_test.py


Ahora debemos instalar la librería de netmiko desde el CMD del proyecto:

comprobamos la instalación con pip list:

Ahora escribimos nuestro codigo:
Primero importamos la librería de netmiko en especifico el método ConnectHandler para establecer conexión con el Router
from netmiko import ConnectHandler
Luego creamos un objeto con los parámetros utilizados para establecer conexión con el Router
R1 = ConnectHandler(
host='192.168.202.101',
username='netadmin',
password='netadmin',
device_type='cisco_xe'
)
Ahora vamos a comprobar si la conexión se estableció con el método is_alive() y el resultado que sera un verdadero o falso se guardara en una variable llamada Heartbeat
Heartbeat = R1.is_alive()
Por ultimo vamos a imprimir la variable Heartbeat para saber si la conexión se estableció con el Router.
print(Heartbeat)
El código completo quedaría asi:
from netmiko import ConnectHandler
R1 = ConnectHandler(
host='192.168.202.101',
username = 'netadmin',
password = 'netadmin',
device_type = 'cisco_xe'
)
Heartbeat = R1.is_alive()
print(Heartbeat)

Si ejecutamos el código tendremos como respuesta True, lo que significa que fue exitoso y se conecto con el Router

Y en el Router podremos observar que se genero un log que indica que alguien estableció conexión SSH.
