[PYTHON] Netmiko détecte automatiquement le type de périphérique réseau et exécute la commande

Qu'est-ce que netmiko

netmiko est une bibliothèque Python qui vous aide à vous connecter et à utiliser des périphériques réseau avec SSH. Actuellement compatible avec Cisco IOS, Juniper JunOS, Palo Alto PAN-OS, etc. La connexion, la transition du mode de configuration, la déconnexion, etc. sont abstraites en tant que méthodes, et les commandes individuelles sont un type de bibliothèque qui spécifie directement les commandes. Il est moins abstrait que NAPALM à cet égard. Il peut être installé avec pip intall netmiko etc.

ktbyers/netmiko: Multi-vendor library to simplify Paramiko SSH connections to network devices

Fonction de détection automatique

Dans netmiko, il est généralement nécessaire de définir un paramètre appelé device_type lors de la création d'un objet de connexion, et dans Cisco IOS, il a été spécifié comme" cisco_ios ".

device_Lors de la spécification explicite du type


remote_device = {'device_type': 'cisco_ios',
                 'host': '192.168.0.254',
                 'username': 'user',
                 'password': 'passwordpassword'}

La version 1.3.0 récemment publiée ajoute une fonctionnalité appelée "SSH autodetect" qui détecte automatiquement device_type.

D'après ce que j'ai lu auto_detect.py, les modèles qui peuvent être détectés automatiquement sont limités aux modèles initialement pris en charge par netmiko. Il semble que oui, mais cette fois j'ai essayé de vérifier s'il pouvait détecter Cisco IOS pour le moment. (Presque le même que l'exemple dans le commentaire dans la source ci-dessus)

Exemple de code

Détection automatique


from netmiko.ssh_autodetect import SSHDetect
from netmiko.ssh_dispatcher import ConnectHandler

#Dispositif de paramétrage_le type est défini pour être détecté automatiquement ici
remote_device = {'device_type': 'autodetect',
                 'host': '192.168.0.254',
                 'username': 'user',
                 'password': 'passwordpassword'}

#Détection automatique
guesser = SSHDetect(**remote_device)
best_match = guesser.autodetect()

#Sortie de débogage des résultats de détection
print("device_type: " + best_match)

#Appareil détecté automatiquement_Réinitialiser le type
remote_device['device_type'] = best_match
connection = ConnectHandler(**remote_device)

#Sortie du résultat de l'exécution de la commande
print(connection.send_command('show version'))

#Déconnecter
connection.disconnect()

Exemple de sortie

Exemple de sortie



device_type: cisco_ios ← appareil détecté_type

Cisco IOS Software, C181X Software (C181X-ADVENTERPRISEK9-M), Version 15.1(4)M4, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2012 by Cisco Systems, Inc.
Compiled Tue 20-Mar-12 23:34 by prod_rel_team

  ~Abréviation~

-------------------------------------------------
Device#	  PID			SN
-------------------------------------------------
*0  	  CISCO1812-J/K9        ***********     
Configuration register is 0x2102

La détection automatique a bien fonctionné et j'ai également pu voir les résultats de la version de l'émission.

référence

Recommended Posts

Netmiko détecte automatiquement le type de périphérique réseau et exécute la commande
Déterminer et traiter automatiquement l'encodage du fichier texte
Vérifiez le type et la version de la distribution Linux
Opération sur les bits comprenant le type de retour et le cast de numpy.random.choice
[EC2] Comment installer Chrome et le contenu de chaque commande
Une commande pour vérifier facilement la vitesse du réseau sur la console
À propos du type de base de Go
Touchez l'objet du réseau neuronal
J'ai essayé de contrôler la bande passante et le délai du réseau avec la commande tc