Quelle est la différence entre Paramiko et Netmiko?

Quelle est la différence entre Paramiko et Netmiko?

En ce qui concerne le réseautage, il y a 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 dispositifs de réseautage partagent des fonctionnalités similaires qui, lorsqu'elles sont maîtrisées, sont automatisables.

Comme mentionné dans mes autres tutoriels, les programmeurs sont paresseux et cherchent toujours à améliorer l'efficacité, ce qui fait le moins de travail 🙂 - et quand 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 vous présenterai l'automatisation de SSH en utilisant deux bibliothèques Python populaires: Paramiko et Netmiko. Nous allons créer des scripts Python simples à l'aide des deux bibliothèques pour automatiser SSH et interagir avec les appareils réseau.

Je choisis cette approche car un guide principalement axé sur les différences entre Paramiko et Netmiko serait trop court - une table simple suffirait et sans cerveau. En adoptant cette approche, vous serez mieux en mesure de les expérimenter et de voir ce qui fait quoi et comment.

Commençons:

Qu'est-ce que Parciko?

Le site officiel définit Parciko comme suit:

«Parciko est un python (2.7, 3.4+) Implémentation du protocole SSHV2 qui fournit des fonctionnalités client et serveur."

J'espère que c'était clair. Foundation, cela signifie Parciko est une bibliothèque Python pour interagir avec SSH.

Maintenant:

Lorsque nous voulons nous connecter à un serveur, nous savons que nous allons au terminal-CMD, xterm, mobaxterm ou simplement à la terminale GNOME, puis à exécuter des commandes.

Voyons comment Parciko peut aider avec cela.

Comment installer Parmiko

Pour utiliser Parciko, nous devons l'installer. Vous devriez avoir Python - de préférence Python 2 - installé sur votre machine. À l'aide de PIP, entrez la commande ci-dessous pour installer Paramiko.

sudo pip installer paramiko
Python -m pip installer paramiko

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

https: // github.com / paramiko / paramiko

Connexion à SSH à l'aide de Parciko

Pour se connecter à SSH à l'aide de Paramiko, nous utilisons la méthode Connect (), qui nécessite le paramètre de nom d'hôte - il prend également en charge d'autres paramètres, mais comme nous n'en nécessitons pas, nous pouvons les ignorer pour le moment.

connect (hostname, port = 22, username = non, non, mot de passe = non, pkey = non, key_filename = non, timeout = non, allow_agent = true, look_for_keys = true, compress = false, sock = non False, gss_deleg_creds = true, gss_host = aucun, banner_timeout = aucun, auth_timeout = aucun, gss_trust_dns = true, passPhrase = aucun, désablet_algorithms = non)

En utilisant cette fonction, qui est disponible dans Paramiko. Client.Sshclient.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 du système local existantes (fiducie).

Si vous disposez d'un fichier hôte spécifique, vous pouvez utiliser la méthode LOAD_HOST_KEYS () et définir le client de Parciko SSH pour ajouter tout hôte inconnu à Paramiko.AutoAddDpolicy (). Si vous utilisez le client dans des systèmes non fiables, évitez d'utiliser le paramiko.Autoaddddpolicy.

Connexion SSH avec un mot de passe

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

De paramiko import util, sshclient, autoadddpolicy
client = sshClient ()
client.load_system_host_keys ()
client.load_host_keys ("/ home / linuxhint /.ssh / connu_hosts ")
client.set_missing_host_key_policy (AutoAddPolicy ())
client.connect (hostname = "Linuxhint.com ", username =" admin ", mot de passe =" adminpassword ")
client.fermer()

Si vous rencontrez des problèmes lors de l'importation de la classe de paramiko sshClient, reportez-vous à la question de StackOverflow suivante:

https: // stackOverflow.com / Questions / 29378234 / Python-Import-Paramiko-Error-Cannot-Import-Name-Util

Connexion SSH via la clé

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

Considérez le code ci-dessous.

à partir de Parciko Import SshClient, AutoAdddpolicy
client = sshClient ()
client.load_system_host_keys ()
client.load_host_keys ('/ home / linuxhint /.ssh / connu_hosts ')
client.set_missing_host_key_policy (AutoAddPolicy ())
client.connecter ('Linuxhint.com ', username =' admin ', key_filename =' ssh_key.pem ', PassPhrase =' adminpassphrase ')
client.fermer()

Commandes en cours d'exécution sur SSH

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

à partir de Parciko Import Sshclient
client = sshClient ()
client.load_system_host_keys ()
client.connecter ('Linuxhint.com ')
stdin, stdout, stderr = client.exec_command ('bash')
stdin.fermer()
stdout.fermer()
stderr.fermer()
client.fermer()

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

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

https: // docs.Paramiko.org / en / stable /
https: // github.com / paramiko / paramiko

Qu'est-ce que Netmiko?

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

  • Prise en charge de l'appareil
  • Performance

Lorsque vous travaillez sur des réseaux du monde réel, vous rencontrerez divers 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 support des appareils, ce qui conduit à des retards et des accidents, vous pouvez vérifier les appareils pris en charge sur la documentation officielle. Il est également considérablement plus lent que Netmiko.

Parciko 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ée pour gérer les appareils réseau tels que les commutateurs et les routeurs.

L'abstraction est l'autre avantage de l'utilisation de netmiko. Netmiko offre une fonction simple que vous pouvez utiliser pour désactiver la pagination. Par exemple, une sortie de la session SSH peut être plus d'une page. En utilisant des séances SSH régulières, vous devrez ajouter un espace en forme d'entrée pour afficher la page suivante. Netmiko vous fournit un moyen de remplacer cela.

Les avantages de Netmiko sur Paramiko sont:

  • Connectez-vous automatiquement via SSH aux appareils réseau.
  • Il fournit une exécution plus simple des commandes et sorties de données.
  • Fournit des fonctionnalités plus simples pour les commandes de configuration, y compris les actions de validation.
  • Prise en charge multi-appareils entre les fournisseurs et plates-formes de périphériques réseau.

Comment installer netmiko

L'installation de Netmiko est également relativement facile:

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

PIP Installer Netmiko
python -m pip installer netmiko

Connexion à SSH à l'aide de Netmiko

La connexion aux séances 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 le SSH générique.

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

# Modules d'importation
De Netmiko Import Connecthandler
# Informations sur l'appareil au format de dictionnaire.
Device_config = "Device_Type": "Cisco_ios",
"IP": "192.168.0.1",
"nom d'utilisateur": "admin",
"mot de passe": "mot de passe",
"secret": "mot de passe"

connexion = 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 la 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:

Netmiko Méthodes couramment utilisées:

  • net_connect.send_command () - Cette fonction envoie des commandes dans un canal réseau et renvoie la sortie en fonction du modèle.
  • net_connect.send_command_timing () - renvoie la sortie en fonction de la synchronisation d'une commande envoyée par un canal réseau.
  • net_connect.send_config_set () - applique des paramètres de configuration aux périphériques distants.
  • net_connect.send_config_from_file () - applique les paramètres de configuration à partir d'un fichier externe
  • net_connect.Save_Config () - Exporte et enregistre la configuration en cours d'exécution comme configuration de démarrage.
  • net_connect.activer () - interroge l'appareil pour activer le mode d'activation.
  • net_connect.find_prompt () - renvoie l'invite du routeur actuel
  • net_connect.commit () - Exécute des commandes de validation sur des appareils tels que Juniper et iOS-XR
  • net_connect.déconnecter () - met fin aux séances
  • net_connect.write_channel () - permet une écriture de bas niveau
  • net_connect.read_channel () - permet une lecture de bas niveau.

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

https: // github.com / ktbyers / netmiko

Conclusion

Dans ce guide rapide, nous avons discuté de la façon d'utiliser Paramiko pour les connexions SSH génériques et la gestion des périphériques de réseau Netmiko, illustrant les différences entre les deux.

De conclure:

Paramiko Netmiko
Utile pour l'utilisation de SSH générique Le plus utile pour la configuration du périphérique réseau.
Prise en charge limitée pour une large gamme d'appareils réseau. Prend en charge un large éventail d'appareils réseau.