Python

Quelle est la différence entre Paramiko et Netmiko?

Quelle est la différence entre Paramiko et Netmiko?

En matière de mise en réseau, il existe un large éventail de perspectives, et on ne peut pas maîtriser comment interagir avec tous les appareils du monde réel. Cependant, tous les périphériques réseau partagent des fonctionnalités similaires qui, une fois maîtrisées, sont automatisables.

Comme mentionné dans mes autres tutoriels, les programmeurs sont paresseux et cherchent toujours à améliorer leur efficacité, faisant ainsi le moins de travail possible 🙂 -, et lorsqu'il s'agit d'automatiser les problèmes liés au réseau, beaucoup sautent souvent sur l'occasion.

Dans le guide rapide d'aujourd'hui, je vais vous présenter l'automatisation de SSH à l'aide de deux bibliothèques Python populaires : Paramiko et Netmiko. Nous allons créer des scripts python simples en utilisant les deux bibliothèques pour automatiser SSH et interagir avec les périphériques réseau.

J'ai choisi cette approche car un guide principalement axé sur les différences entre Paramiko et Netmiko serait trop court-un simple tableau suffirait-et pas-concret. En adoptant cette approche, vous serez mieux en mesure de les expérimenter et de voir qui fait quoi et comment.

Commençons:

Qu'est-ce que Paramiko?

Le site officiel définit Paramiko comme suit :

"Paramiko est un Python (2.7, 3.4+) implémentation du protocole SSHv2 qui fournit à la fois des fonctionnalités client et serveur."

j'espère que c'était clair. Fondamentalement, cela signifie Paramiko est une bibliothèque python pour interagir avec SSH.

À présent:

Lorsque nous voulons nous connecter à un serveur, nous savons que nous allons au terminal-cmd, xterm, MobaXterm ou simplement au terminal Gnome-login, puis exécutons les commandes.

Voyons comment Paramiko peut vous aider.

Comment installer Paramiko

Pour utiliser Paramiko, nous devons l'installer. Vous devriez avoir Python - de préférence python 2 - installé sur votre machine. En utilisant pip, entrez la commande ci-dessous pour installer Paramiko.

sudo pip installer Paramiko
Python -m pip install paramiko

Si vous cherchez à construire à partir de la source, reportez-vous au référentiel officiel Paramiko GitHub en utilisant la ressource fournie :

https://github.com/paramiko/paramiko

Se connecter à SSH avec Paramiko

Pour nous connecter à SSH à l'aide de Paramiko, nous utilisons la méthode connect(), qui nécessite le paramètre hostname - elle prend également en charge d'autres paramètres, mais comme nous n'en avons pas besoin, nous pouvons les ignorer pour le moment.

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)

Utiliser cette fonction, disponible dans paramiko. Client.Client SSH.connect(), se connecte au nom d'hôte spécifié et l'authentifie. Le système cible est vérifié par rapport aux clés système locales existantes (de confiance).

Si vous avez un fichier hôte spécifique, vous pouvez utiliser la méthode load_host_keys() et configurer le client Paramiko SSH pour ajouter tout hôte inconnu à paramiko.StratégieAjoutAuto(). Si vous utilisez le client dans des systèmes non fiables, évitez d'utiliser le paramiko.StratégieAjoutAuto.

Connexion SSH avec un mot de passe

À partir de la méthode de connexion, nous pouvons voir que nous avons les paramètres de nom d'utilisateur et de mot de passe que nous pouvons utiliser pour nous connecter au système. Considérez le code ci-dessous pour vous connecter SSH via un nom d'utilisateur et un mot de passe.

de paramiko import util, SSHClient, AutoAddPolicy
client = SSHClient()
client.load_system_host_keys()
client.load_host_keys("/home/linuxhint/.ssh/known_hosts")
client.set_missing_host_key_policy(AutoAddPolicy())
client.connect(hostname="linuxhint.com", username="admin", password="AdminPassword")
client.Fermer()

Si vous rencontrez des problèmes lors de l'importation de la classe Paramiko SSHClient, reportez-vous à la question de débordement de pile suivante :

https://stackoverflow.com/questions/29378234/python-import-paramiko-error-cannot-import-name-util

Connexion SSH via une clé

Comme nous le savons tous, la connexion SSH via une clé est plus sécurisée que l'utilisation d'un mot de passe brut. Paramiko le sait et vous permet de transmettre le fichier clé et de vous connecter au système cible.

Considérez le code ci-dessous.

de paramiko import SSHClient
de paramiko AutoAddPolicy
client = SSHClient()
client.load_system_host_keys()
client.load_host_keys('/home/linuxhint/.ssh/known_hosts')
client.set_missing_host_key_policy(AutoAddPolicy())
client.connect('linuxhint.com',username='admin',key_filename='ssh_key.pem', passphrase='AdminPassphrase')
client.Fermer()

Exécution de commandes via SSH

Une fois que vous avez accès au système en utilisant SSH (via Paramiko), vous pouvez exécuter une série de commandes. Considérez l'extrait de code suivant :

client = SSHClient()
client.load_system_host_keys()
client.connect('linuxhint.com')
stdin, stdout, stderr = client.exec_command('bash")
standard.Fermer()
sortie standard.Fermer()
stderr.Fermer()
client.Fermer()

À ce stade, vous savez utiliser la bibliothèque Paramiko pour automatiser SSH. Comme vous pouvez l'imaginer, ce n'est pas un guide Paramiko complet, et nous ne plongeons pas dans les détails liés à ce que fait l'outil. Le but était de vous montrer sa mise en œuvre.

Pour plus d'informations, veuillez vous référer à des documents plus complets tels que:

https://docs.paramiko.org/fr/stable/
https://github.com/paramiko/paramiko

Qu'est-ce que Netmiko?

Netmiko est très populaire et similaire à Paramiko avec quelques différences significatives :

Lorsque vous travaillez sur des réseaux réels, vous rencontrerez différents modèles d'appareils. Ainsi, vous avez besoin d'un outil fiable qui peut vous aider à automatiser le processus. Dans certains cas, vous ne pouvez pas utiliser Paramiko en raison des limitations de prise en charge des appareils, ce qui entraîne des retards et des plantages. Vous pouvez vérifier les appareils pris en charge sur la documentation officielle. Il est également considérablement plus lent que Netmiko.

Paramiko est plus un module SSH générique que vous pouvez utiliser pour automatiser des tâches SSH spécifiques. En revanche, Netmiko est plus large et bien optimisé pour la gestion des périphériques réseau tels que les commutateurs et les routeurs.

L'abstraction est l'autre avantage d'utiliser Netmiko. Netmiko fournit une fonction simple que vous pouvez utiliser pour désactiver la pagination. Par exemple, une sortie de la session SSH peut comporter plusieurs pages. En utilisant des sessions SSH régulières, vous devrez ajouter un espace de type entrée pour afficher la page suivante. Netmiko vous offre un moyen de contourner ce.

Les avantages de Netmiko par rapport à Paramiko sont :

Comment installer Netmiko

L'installation de Netmiko est également relativement simple :

Tout ce que vous avez à faire est de vous assurer que Python et pip sont installés sur votre système et d'exécuter la commande :

pip installer netmiko
python -m pip installer netmiko

Se connecter à SSH avec Netmiko

La connexion aux sessions SSH de l'appareil à l'aide de Netmiko est très simple. N'oubliez pas que Netmiko est plus optimisé pour les appareils tels que les routeurs et non pour le SSH générique.

Considérez l'extrait de code ci-dessous.

#importer des modules
depuis netmiko importer ConnectHandler
# infos sur l'appareil au format dictionnaire.
device_config =
« type_périphérique » : « cisco_ios »,
« IP » : « 192.168.0.1",
« nom d'utilisateur » : « admin »,
"mot de passe": "mot de passe",
"secret": "mot de passe"

connection = ConnectHandler(**device_config)

En utilisant le code simple ci-dessus, vous aurez une connexion SSH à l'appareil. Vous pouvez également transmettre les informations de l'appareil directement au lieu de les transmettre à un dictionnaire.

Une fois que vous avez une session SSH, vous pouvez exécuter des commandes à l'aide de la fonction send_command(). Les fonctions prises en charge par netmiko incluent :

Méthodes couramment utilisées par Netmiko :

Comme mentionné précédemment, ce n'est pas un guide sur la façon d'utiliser Netmiko mais une simple direction de ce que sont Netmiko et Paramiko. Consultez la documentation officielle pour plus d'informations.

https://github.com/ktbyers/netmiko

Conclusion

Dans ce guide rapide, nous avons expliqué comment utiliser paramiko pour les connexions SSH génériques et la gestion des périphériques réseau Netmiko, illustrant les différences entre les deux.

De conclure:

Paramiko Netmiko
Utile pour une utilisation ssh générique Le plus utile pour la configuration des périphériques réseau.
Prise en charge limitée d'un large éventail de périphériques réseau. Prend en charge une large gamme de périphériques réseau.
Comment télécharger et jouer à Civilization VI de Sid Meier sur Linux
Présentation du jeu Civilization 6 est une version moderne du concept classique introduit dans la série de jeux Age of Empires. L'idée était assez sim...
Comment installer et jouer à Doom sur Linux
Introduction à Doom La série Doom est née dans les années 90 après la sortie du Doom original. Ce fut un succès instantané et à partir de ce moment-là...
Vulkan pour les utilisateurs Linux
Avec chaque nouvelle génération de cartes graphiques, nous voyons les développeurs de jeux repousser les limites de la fidélité graphique et se rappro...