¿Cuál es la diferencia entre Paramiko y Netmiko??

¿Cuál es la diferencia entre Paramiko y Netmiko??

Cuando se trata de redes, hay una amplia gama de perspectivas, y uno no puede dominar cómo interactuar con todos los dispositivos en el mundo real. Sin embargo, todos los dispositivos de red comparten una funcionalidad similar que, cuando se domina, son automatizables.

Como se menciona en mis otros tutoriales, los programadores son flojos y siempre buscan mejorar la eficiencia, por lo que hace el menor trabajo 🙂-, y cuando se trata de automatizar problemas relacionados con la red, muchos a menudo aprovechan el azar.

En la guía rápida de hoy, te presentaré automatizando SSH usando dos bibliotecas populares de Python: Paramiko y Netmiko. Crearemos scripts simples de Python utilizando las dos bibliotecas para automatizar SSH e interactuar con dispositivos de red.

Elijo este enfoque porque una guía se centró principalmente en las diferencias entre Paramiko y Netmiko sería demasiado corta. Una tabla simple sería suficiente y sincrete. Al adoptar este enfoque, podrá experimentar con ellos y ver cuál hace qué y cómo.

Empecemos:

Que es paramiko?

El sitio web oficial define Paramiko de la siguiente manera:

"Paramiko es un python (2.7, 3.4+) Implementación del protocolo SSHV2 que proporciona la funcionalidad del cliente y del servidor."

Espero que esté claro. Fundamentalmente, significa Paramiko es una biblioteca de Python para interactuar con SSH.

Ahora:

Cuando queremos iniciar sesión en un servidor, sabemos que vamos a Terminal-CMD, Xterm, Mobaxter o solo el GNOME Terminal-Login, luego ejecutamos comandos.

Veamos cómo Paramiko puede ayudar con eso.

Cómo instalar Paramiko

Para usar Paramiko, necesitamos instalarlo. Debe tener Python, preferiblemente Python 2, instalado en su máquina. Usando PIP, ingrese el comando a continuación para instalar Paramiko.

sudo pip instalar paramiko
Python -M PIP Instalar Paramiko

Si está buscando construir desde la fuente, consulte el repositorio oficial de Paramiko GitHub utilizando el recurso proporcionado:

https: // github.com/paramiko/paramiko

Conectarse a SSH usando Paramiko

Para conectarse a SSH usando Paramiko, usamos el método Connect (), que requiere el parámetro de nombre de host, también es compatible con otros parámetros, pero como no requerimoslos, podemos ignorarlos por ahora.

Connect (hostname, port = 22, username = none, contraseña = none, pkey = none, key_filename = none, timeOut = none, tampent = true, look_for_keys = true, compress = false, sock = none, gss_auth = false, gss_kex = Falso, gss_deleg_creds = true, gss_host = none, banner_timeout = none, auth_timeout = none, gss_trust_dns = true, passphrase = none, discaped_algorithms = none)

Uso de esta función, que está disponible en Paramiko. Cliente.Sshclient.Connect (), se conecta al nombre de host especificado y lo autentica. El sistema de destino se verifica con las claves del sistema local existentes (confianza).

Si tiene un archivo de host específico, puede usar el método Load_host_keys () y establecer el cliente Paramiko SSH para agregar cualquier host desconocido a Paramiko.Autoaddpolicy (). Si está utilizando el cliente en sistemas no confiables, evite usar el paramiko.Autoaddpolicy.

Conectando SSH con una contraseña

Desde el método de conexión, podemos ver que tenemos los parámetros de nombre de usuario y contraseña que podemos usar para conectarnos al sistema. Considere el código a continuación para conectar SSH a través del nombre de usuario y la contraseña.

De Paramiko Import Util, SSHClient, AutoaddPolicy
cliente = sshclient ()
cliente.load_system_host_keys ()
cliente.load_host_keys ("/home/linuxhint/.ssh/conoce_hosts ")
cliente.set_missing_host_key_policy (autoaddpolicy ())
cliente.Connect (hostname = "Linuxhint.com ", username =" admin ", contraseña =" adminpassword ")
cliente.cerca()

Si encuentra problemas al importar la clase Paramiko SSHClient, consulte la siguiente pregunta de StackOverflow:

https: // stackoverflow.com/Preguntas/29378234/Python-Import-Paramiko-Serror-Cannot-Import-Name-Util

Conectando SSH a través de la tecla

Como todos sabemos, conectar SSH a través de la tecla es más segura que usar una contraseña RAW. Paramiko lo sabe y le permite pasar el archivo de clave y conectarse al sistema de destino.

Considere el código a continuación.

Desde Paramiko Import Sshclient, AutoAddPolicy
cliente = sshclient ()
cliente.load_system_host_keys ()
cliente.load_host_keys ('/home/linuxhint/.ssh/conoce_hosts ')
cliente.set_missing_host_key_policy (autoaddpolicy ())
cliente.conectar ('Linuxhint.com ', username =' admin ', key_filename =' ssh_key.PEM ', PassPhrase =' AdminPassphrase ')
cliente.cerca()

Ejecutando comandos sobre SSH

Una vez que obtenga acceso al sistema utilizando SSH (sobre Paramiko), puede ejecutar una serie de comandos. Considere el siguiente fragmento de código:

de Paramiko import sshclient
cliente = sshclient ()
cliente.load_system_host_keys ()
cliente.conectar ('Linuxhint.com ')
stdin, stdout, stderr = cliente.Exec_Command ('Bash')
stdin.cerca()
stdout.cerca()
stderr.cerca()
cliente.cerca()

En este punto, sabe cómo usar la biblioteca Paramiko para automatizar SSH. Como puede imaginar, esta no es una guía de paramiko integral, y no nos sumergimos en detalles relacionados con lo que hace la herramienta. El objetivo era mostrarle su implementación.

Para obtener más información, consulte materiales más completos como:

https: // documentos.paramiko.org/en/stable/
https: // github.com/paramiko/paramiko

Que es netmiko?

Netmiko es muy popular y similar a Paramiko con algunas diferencias significativas:

  • Soporte del dispositivo
  • Actuación

Al trabajar en redes del mundo real, se encontrará con varios modelos de dispositivos. Por lo tanto, necesita una herramienta confiable que pueda ayudarlo a automatizar el proceso. En algunos casos, no puede usar Paramiko debido a las limitaciones de soporte del dispositivo, lo que lleva a retrasos y bloqueos, puede verificar los dispositivos compatibles en la documentación oficial. También es considerablemente más lento que Netmiko.

Paramiko es más un módulo SSH genérico que puede usar para automatizar tareas SSH específicas. En contraste, Netmiko es más amplio y está bien optimizado para administrar dispositivos de red, como conmutadores y enrutadores.

La abstracción es la otra ventaja de usar netmiko. NetMiko proporciona una función simple que puede usar para deshabilitar la paginación. Por ejemplo, una salida de la sesión SSH podría ser más de una página. Usando sesiones SSH regulares, deberá agregar un espacio de entrada para mostrar la página siguiente. Netmiko le proporciona una forma de anular esto.

Las ventajas de Netmiko sobre Paramiko son:

  • Conectarse automáticamente a través de SSH a dispositivos de red.
  • Proporciona una ejecución más simple de los comandos y la salida de datos.
  • Proporciona una funcionalidad más simple para los comandos de configuración, incluidas las acciones de confirmación.
  • Soporte de dispositivos múltiples en proveedores y plataformas de dispositivos de red.

Cómo instalar netmiko

La instalación de NetMiko también es relativamente fácil:

Todo lo que tiene que hacer es asegurarse de que Python y PIP instalen en su sistema y ejecute el comando:

PIP Instale NetMiko
python -m pip install netmiko

Conectarse a SSH usando NetMiko

Conectarse a las sesiones SSH de dispositivos con NetMiko es muy simple. Recuerde que Netmiko está más optimizado para dispositivos como enrutadores y no SSH genérico.

Considere el fragmento de código a continuación.

# módulos de importación
de netmiko import conectador
# Información del dispositivo en formato de diccionario.
dispositivo_config = "dispositivo_type": "cisco_ios",
"IP": "192.168.0.1 ",
"nombre de usuario": "administrador",
"Contraseña": "Contraseña",
"contraseña secreta"

conexión = connectthandler (** dispositivo_config)

Usando el código simple anterior, tendrá una conexión SSH con el dispositivo. También puede pasar la información del dispositivo directamente en lugar de pasarla a un diccionario.

Una vez que tenga una sesión SSH, puede ejecutar comandos usando la función send_command (). Las funciones respaldadas por Netmiko incluyen:

Métodos de uso común de Netmiko:

  • net_connect.send_command (): estas funciones envían comandos en un canal de red y devuelve la salida en función del patrón.
  • net_connect.send_command_timing (): devuelve la salida basada en el tiempo de un comando enviado un canal de red.
  • net_connect.send_config_set (): aplica la configuración de la configuración en dispositivos remotos.
  • net_connect.send_config_from_file (): aplica la configuración de la configuración desde un archivo externo
  • net_connect.save_config (): exporta y guarda la configuración en ejecución como la configuración de inicio.
  • net_connect.habilitar (): consulte el dispositivo para activar el modo de habilitación.
  • net_connect.find_promppt () - Devuelve la solicitud de enrutador actual
  • net_connect.Commit () - Ejecuta comandos de cometer en dispositivos como Juniper e iOS -XR
  • net_connect.desconectar () - termina las sesiones
  • net_connect.write_channel () - habilita la escritura de bajo nivel
  • net_connect.read_channel () - habilita la lectura de bajo nivel.

Como se mencionó anteriormente, esta no es una guía sobre cómo usar Netmiko, sino una dirección simple de lo que son Netmiko y Paramiko. Consulte la documentación oficial para obtener más información.

https: // github.com/ktbyers/netmiko

Conclusión

En esta guía rápida, discutimos cómo usar Paramiko para conexiones SSH genéricas y administración de dispositivos de red de Netmiko, ilustrando las diferencias entre los dos.

Para concluir:

Paramiko Netmiko
Útil para uso genérico de SSH Más útil para la configuración del dispositivo de red.
Soporte limitado para una amplia gama de dispositivos de red. Admite una amplia gama de dispositivos de red.