informatica:programacion:python:modulos:netmiko
Tabla de Contenidos
Netmiko
Biblioteca de Python basada en Paramiko que facilita las conexiones con dispositivos de red.
Instalación
pip install netmiko
Dispositivos soportados
Salvo los genéricos o terminal servers, los demás hacen que Netmiko realice alguna operación tras iniciar sesión correctamente.
| Sistema | device_type |
|---|---|
| Arista EOS | arista_eos |
| Cisco IOS | cisco_ios |
| Cisco IOS-XR | cisco_xr |
| Cisco NX-OS | cisco_nxos |
| Junos | juniper |
| terminal_server | |
| generic |
La lista completa de device_type soportados por Netmiko está en los índices del array CLASS_MAPPER del fichero ssh_dispatcher.py
Uso
Ejemplo básico
from netmiko import ConnectHandler # Información de conexión device = { 'device_type': 'terminal_server', 'ip': '10.0.65.28', 'username': 'root', 'password': 'abc123.', 'port': 22 } # Conexión net_connect = ConnectHandler(**device) # Ejecución de un comando output = net_connect.send_command("uptime") print() print('#' * 50) print(type(output)) print(output) print('#' * 50) print() # Cerramos la conexión net_connect.disconnect()
Ejemplo Cisco
Conexión a un router Cisco y ejecución de un comando
from netmiko import ConnectHandler # Creamos la conexión SSH sshCli = ConnectHandler( device_type='cisco_ios', host='192.168.56.101', port=22, username='cisco', password='cisco123!' ) # Probamos a ejecutar un comando en el router output = sshCli.send_command("show ip int brief") # Mostramos el resultado print("show ip int brief: \n{}\n".format(output))
Conexión mediante proxy/gateway
También se conoce a esto como conexión mediante jump hosts, donde la conexión se realiza a un servidor desde el que se realiza otra conexión al dispositivo final.
Necesario instalar el módulo jumpssh: pip install jumpssh
from netmiko import ConnectHandler from jumpssh import SSHSession targetnode = { 'device_type': 'alcatel_sros', 'ip': 'targed_node', 'username': 'admin', 'password': 'admin', 'port': 22, } jh_session = SSHSession('jumpserver_ip','jumpserver_user',password='jumpserver_passwd').open() remote_connect = ConnectHandler(**targetnode) output = remote_connect.send_command("show router interface") print(output)
Recursos
- Netmiko Library: introducción por el autor del módulo.
informatica/programacion/python/modulos/netmiko.txt · Última modificación: por tempwin
