[PYTHON] Netmiko erkennt automatisch den Typ des Netzwerkgeräts und führt den Befehl aus

Was ist Netmiko?

netmiko ist eine Python-Bibliothek, mit der Sie sich anmelden und Netzwerkgeräte mit SSH betreiben können. Derzeit kompatibel mit Cisco IOS, Juniper JunOS, Palo Alto PAN-OS usw. Anmeldung, Übergang in den Konfigurationsmodus, Abmeldung usw. werden als Methoden abstrahiert, und einzelne Befehle sind eine Art Bibliothek, die Befehle direkt angibt. In dieser Hinsicht ist es weniger abstrakt als NAPALM. Es kann mit pip intall netmiko usw. installiert werden.

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

Automatische Erkennungsfunktion

In netmiko ist es normalerweise erforderlich, beim Erstellen eines Verbindungsobjekts einen Parameter namens "device_type" festzulegen, und in Cisco IOS wurde dieser als "cisco_ios" angegeben.

device_Bei expliziter Angabe des Typs


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

Die kürzlich veröffentlichte Version 1.3.0 fügt eine Funktion namens "SSH Autodetect" hinzu, die "device_type" automatisch erkennt.

Soweit ich auto_detect.py gelesen habe, sind die Modelle, die automatisch erkannt werden können, auf die Modelle beschränkt, die ursprünglich von netmiko unterstützt wurden. Es scheint, dass dies der Fall ist, aber diesmal habe ich versucht zu überprüfen, ob Cisco IOS vorerst erkannt werden kann. (Fast das gleiche wie im Beispiel im Kommentar in der obigen Quelle)

Codebeispiel

Automatische Erkennung


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

#Parametriergerät_Typ ist hier auf automatische Erkennung eingestellt
remote_device = {'device_type': 'autodetect',
                 'host': '192.168.0.254',
                 'username': 'user',
                 'password': 'passwordpassword'}

#Automatische Erkennung
guesser = SSHDetect(**remote_device)
best_match = guesser.autodetect()

#Debug-Ausgabe des Erkennungsergebnisses
print("device_type: " + best_match)

#Automatisch erkanntes Gerät_Typ zurücksetzen
remote_device['device_type'] = best_match
connection = ConnectHandler(**remote_device)

#Ausgabe des Befehlsausführungsergebnisses
print(connection.send_command('show version'))

#Trennen
connection.disconnect()

Ausgabebeispiel

Ausgabebeispiel



device_type: cisco_ios ← Gerät erkannt_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

  ~Abkürzung~

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

Die automatische Erkennung funktionierte einwandfrei und ich konnte auch die Ergebnisse der Showversion sehen.

Referenz

--netmiko allgemeines Tutorial - https://pynet.twb-tech.com/blog/automation/netmiko.html

Recommended Posts

Netmiko erkennt automatisch den Typ des Netzwerkgeräts und führt den Befehl aus
Ermitteln und verarbeiten Sie die Codierung der Textdatei automatisch
Überprüfen Sie den Linux-Verteilungstyp und die Version
Bitoperation einschließlich des Rückgabetyps und der Umwandlung von numpy.random.choice
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
Ein Befehl zum einfachen Überprüfen der Netzwerkgeschwindigkeit auf der Konsole
Über den Grundtyp von Go
Berühren Sie das Objekt des neuronalen Netzes
Ich habe versucht, die Netzwerkbandbreite und -verzögerung mit dem Befehl tc zu steuern