Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:modulos:netmiko

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

informatica/programacion/python/modulos/netmiko.txt · Última modificación: por tempwin