informatica:programacion:python:modulos:netmiko
¡Esta es una revisión vieja del documento!
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
import netmiko 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.1623927418.txt.gz · Última modificación: por tempwin
