cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 
cancel
2790
Visitas
14
ÚTIL
3
Comentarios
Edson A. Hernandez
Spotlight
Spotlight

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.

EdsonAHernandez_0-1699291081087.png

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:

EdsonAHernandez_1-1699291126645.png

Ejemplo de conexion a un Router Cisco:

Como ejemplo vamos usar la siguiente topologia:

EdsonAHernandez_2-1699291683730.png

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:

EdsonAHernandez_3-1699291848743.png

https://www.jetbrains.com/pycharm/download/?section=windows

 

Creamos un nuevo proyecto llamdao netmiko_test

EdsonAHernandez_5-1699291933398.png

EdsonAHernandez_6-1699291973505.png

 

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

EdsonAHernandez_7-1699292073654.png

EdsonAHernandez_8-1699292096487.png

 

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

EdsonAHernandez_9-1699292257672.png

 

comprobamos la instalación con pip list:

EdsonAHernandez_10-1699292308599.png

 

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)

EdsonAHernandez_11-1699292661932.png

 

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

EdsonAHernandez_12-1699292848440.png

 

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

EdsonAHernandez_13-1699292918280.png

 

3 Comentarios
Vamos a comenzar

¡Conecte con otros expertos de Cisco y del mundo! Encuentre soluciones a sus problemas técnicos o comerciales, y aprenda compartiendo experiencias.

Queremos que su experiencia sea grata, le compartimos algunos links que le ayudarán a familiarizarse con la Comunidad de Cisco: