Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:modulos:netmiko

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
informatica:programacion:python:modulos:netmiko [2020/11/11 21:59] – creado tempwininformatica:programacion:python:modulos:netmiko [2021/06/17 12:57] (actual) – [Ejemplo Cisco] tempwin
Línea 1: Línea 1:
 ====== Netmiko ====== ====== Netmiko ======
  
-Biblioteca de Python basada en Paramiko que facilita las conexiones con dispositivos de red.+Biblioteca de Python basada en [[http://www.paramiko.org/|Paramiko]] que facilita las conexiones con dispositivos de red.
  
   * [[https://github.com/ktbyers/netmiko|Repositorio oficial]]   * [[https://github.com/ktbyers/netmiko|Repositorio oficial]]
   * [[https://ktbyers.github.io/netmiko/|Web oficial]]   * [[https://ktbyers.github.io/netmiko/|Web oficial]]
 +
 +===== Instalación =====
 +
 +<code>
 +pip install netmiko
 +</code>
 +
 +===== 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 [[https://github.com/ktbyers/netmiko/blob/master/netmiko/ssh_dispatcher.py|ssh_dispatcher.py]]
 +===== Uso =====
 +
 +==== Ejemplo básico ====
 +
 +<code python>
 +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()
 +</code>
 +
 +==== Ejemplo Cisco ====
 +
 +Conexión a un router Cisco y ejecución de un comando
 +
 +<code python>
 +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))
 +</code>
 +==== 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.
 +
 +<WRAP center round info 60%>
 +Necesario instalar el módulo ''jumpssh'': ''pip install jumpssh''
 +</WRAP>
 +
 +
 +<code python>
 +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)
 +</code>
 +===== Recursos =====
 +
 +  * [[https://pynet.twb-tech.com/blog/automation/netmiko-proxy.html|Netmiko SSH Proxy Support]]
 +  * [[https://github.com/ktbyers/netmiko/issues/479|Help to access network device via ssh over jump server from windows script server]] (GitHub)
 +  * [[https://pynet.twb-tech.com/blog/automation/netmiko.html|Netmiko Library]]: introducción por el autor del módulo.
 +  * [[https://saidvandeklundert.net/2020-01-17-python-screen-scraping-basics/|Screen scraping basics for network engineers]]
informatica/programacion/python/modulos/netmiko.1605128349.txt.gz · Última modificación: por tempwin