Pitón

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

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

Cuando se trata de redes, existe una amplia gama de perspectivas y no se 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, se pueden automatizar.

Como mencioné en mis otros tutoriales, los programadores son perezosos y siempre buscan mejorar la eficiencia, por lo que hacen el menor trabajo 🙂, y cuando se trata de automatizar problemas relacionados con la red, muchos a menudo aprovechan la oportunidad.

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

Elegí este enfoque porque una guía centrada principalmente en las diferencias entre Paramiko y Netmiko sería demasiado corta (una tabla simple sería suficiente) y no concreta. Al adoptar este enfoque, podrá experimentar mejor 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 una Python (2.7, 3.4+) implementación del protocolo SSHv2 que proporciona funcionalidad tanto de cliente como de servidor."

Espero que haya quedado 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 al terminal-cmd, xterm, MobaXterm, o simplemente al Gnome Terminal-login, luego ejecutamos los comandos.

Veamos cómo puede ayudar Paramiko 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 siguiente comando para instalar Paramiko.

sudo pip instalar Paramiko
Python -m pip instalar paramiko

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

https: // github.com / paramiko / paramiko

Conexión a SSH usando Paramiko

Para conectarnos a SSH usando Paramiko, usamos el método connect (), que requiere el parámetro de nombre de host; también admite otros parámetros, pero como no los requerimos, podemos ignorarlos por ahora.

connect (hostname, port = 22, username = None, password = None, pkey = None, key_filename = None, timeout = None, allow_agent = True, look_for_keys = True, compress = False, sock = None, gss_auth = False, gss_kex = False, gss_deleg_creds = True, gss_host = None, banner_timeout = None, auth_timeout = None, gss_trust_dns = True, passphrase = None, disabled_algorithms = None)

Usando 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 (confiable).

Si tiene un archivo de host específico, puede usar el método load_host_keys () y configurar el cliente SSH de Paramiko para agregar cualquier host desconocido a paramiko.AutoAddPolicy (). Si está utilizando el cliente en sistemas que no son de confianza, evite utilizar el paramiko.AutoAddPolicy.

Conexión SSH con 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 siguiente código para conectar SSH a través de nombre de usuario y contraseña.

desde paramiko import util, SSHClient, AutoAddPolicy
cliente = SSHClient ()
cliente.load_system_host_keys ()
cliente.load_host_keys ("/ inicio / linuxhint /.ssh / hosts_conocidos ")
cliente.set_missing_host_key_policy (AutoAddPolicy ())
cliente.conectar (nombre de host = "linuxhint.com ", nombre de usuario =" admin ", contraseña =" AdminPassword ")
cliente.cerca()

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

https: // stackoverflow.com / questions / 29378234 / python-import-paramiko-error-can't-import-name-util

Conexión SSH a través de clave

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

Considere el siguiente código.

desde paramiko importar SSHClient
de paramiko AutoAddPolicy
cliente = SSHClient ()
cliente.load_system_host_keys ()
cliente.load_host_keys ('/ inicio / linuxhint /.ssh / hosts_conocidos ')
cliente.set_missing_host_key_policy (AutoAddPolicy ())
cliente.conectar ('linuxhint.com ', username =' admin ', key_filename =' ssh_key.pem ', contraseña =' AdminPassphrase ')
cliente.cerca()

Ejecución de comandos a través de SSH

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

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 completa de Paramiko, y no nos sumergimos en detalles relacionados con lo que hace la herramienta. El objetivo era mostrarte su implementación.

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

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

Que es Netmiko?

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

Cuando trabaje 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 genera retrasos y fallas; 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. Por el contrario, 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, un resultado de la sesión SSH puede tener más de una página. Al usar sesiones SSH regulares, tendrá que agregar un espacio similar a una entrada para mostrar la página siguiente. Netmiko le proporciona una forma de anular este.

Las ventajas de Netmiko sobre Paramiko son:

Cómo instalar Netmiko

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

Todo lo que tiene que hacer es asegurarse de tener Python y pip instalados en su sistema y ejecutar el comando:

pip instalar netmiko
python -m pip instalar netmiko

Conexión a SSH mediante Netmiko

Conectarse a sesiones SSH del dispositivo usando Netmiko es muy simple. Recuerde que Netmiko está más optimizado para dispositivos como enrutadores y no para SSH genérico.

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

#importar módulos
desde netmiko import ConnectHandler
# información del dispositivo en formato de diccionario.
device_config =
"Device_type": "cisco_ios",
"Ip": "192.168.0.1 ”,
"Nombre de usuario": "admin",
"Contraseña": "contraseña",
"contraseña secreta"

conexión = ConnectHandler (** device_config)

Usando el código simple anterior, tendrá una conexión SSH al 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 admitidas por netmiko incluyen:

Métodos de uso común de Netmiko:

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. Consulta la documentación oficial para 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 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 de dispositivos de red.
Soporte limitado para una amplia gama de dispositivos de red. Admite una amplia gama de dispositivos de red.
Herramientas útiles para jugadores de Linux
Si le gusta jugar juegos en Linux, es probable que haya utilizado aplicaciones y utilidades como Wine, Lutris y OBS Studio para mejorar la experiencia...
Juegos HD remasterizados para Linux que nunca tuvieron un lanzamiento de Linux antes
Muchos desarrolladores y editores de juegos están creando una remasterización HD de juegos antiguos para extender la vida útil de la franquicia, por f...
Cómo usar AutoKey para automatizar juegos de Linux
AutoKey es una utilidad de automatización de escritorio para Linux y X11, programada en Python 3, GTK y Qt. Usando su funcionalidad de scripting y MAC...