Was ist der Unterschied zwischen Paramiko und Netmiko?

Was ist der Unterschied zwischen Paramiko und Netmiko?

Wenn es um Vernetzung geht, gibt es eine Vielzahl von Perspektiven, und man kann nicht beherrschen, wie man mit allen Geräten in der realen Welt interagiert. Alle Netzwerkgeräte teilen jedoch eine ähnliche Funktionalität, die beim Mastering automatisch sind.

Wie in meinen anderen Tutorials erwähnt, sind Programmierer faul und versuchen immer, die Effizienz zu verbessern.

Im heutigen Quick Guide werde ich Ihnen die Automatisierung von SSH mit zwei beliebten Python -Bibliotheken vorstellen: Paramiko Und Netmiko. Wir erstellen einfache Python -Skripte mit den beiden Bibliotheken, um SSH zu automatisieren und mit Netzwerkgeräten zu interagieren.

Ich wähle diesen Ansatz, weil ein Leitfaden, der sich hauptsächlich auf die Unterschiede zwischen Paramiko und Netmiko konzentrierte. Wenn Sie diesen Ansatz verfolgen, können Sie besser mit ihnen experimentieren und sehen, was was und wie macht.

Lass uns anfangen:

Was ist Paramiko?

Die offizielle Website definiert Paramiko wie folgt:

„Paramiko ist ein Python (2.7, 3.4+) Implementierung des SSHV2 -Protokolls, das sowohl Client- als auch Serverfunktionalität bietet.”

Ich hoffe das war klar. Fundamental bedeutet es Paramiko ist eine Python -Bibliothek für die Interaktion mit SSH.

Jetzt:

Wenn wir uns bei einem Server anmelden wollen, wissen wir, dass wir zum Terminal-CMD, Xterm, Mobaxterm oder nur zum Gnome-Terminal-Login gehen, dann die Befehle ausführen.

Mal sehen, wie Paramiko dabei helfen kann.

So installieren Sie Paramiko

Um Paramiko zu verwenden, müssen wir es installieren. Sie sollten Python haben - vorzugsweise Python 2 - auf Ihrem Computer installiert. Geben Sie mit PIP den folgenden Befehl ein, um Paramiko zu installieren.

sudo pip installieren paramiko
Python -m PIP Installation Paramiko

Wenn Sie aus der Quelle erstellen möchten, lesen Sie das offizielle Paramiko Github -Repository mit der bereitgestellten Ressource:

https: // github.com/paramiko/paramiko

Verbindung zu SSH mit Paramiko herstellen

Um mit Paramiko eine Verbindung zu SSH herzustellen, verwenden wir die Connect () -Methode, für die das Hostname-Parameter-It auch andere Parameter unterstützt. Da wir diese jedoch nicht benötigen, können wir sie vorerst ignorieren.

Connect (Hostname, Port = 22, userername = none, password = none, pkey = none, key_fileName = none, timeout = none, degit_agent = true, Look_FOR_KEYS = true, compress = false, sock = none, gss_auth = false, gss_kex = False, gss

Verwenden dieser Funktion, die in Paramiko verfügbar ist. Klient.Sshclient.Connect () stellt eine Verbindung zum angegebenen Hostnamen her und authentifiziert ihn. Das Zielsystem wird mit den vorhandenen lokalen Systemschlüssel (Trusted) überprüft.

Wenn Sie eine bestimmte Hostdatei haben, können Sie die Methode load_host_keys () verwenden und den Paramiko SSH -Client festlegen, um einen unbekannten Host zu Paramiko hinzuzufügen.Autoaddpolicy (). Wenn Sie den Client in nicht vertrauenswürdigen Systemen verwenden, vermeiden Sie die Verwendung des Paramiko.Autoaddpolicy.

Verbinden Sie SSH mit einem Passwort

Aus der Connect -Methode können wir feststellen, dass wir über die Benutzernamen- und Kennwortparameter verfügen, mit denen wir eine Verbindung zum System herstellen können. Betrachten Sie den folgenden Code, um SSH über Benutzername und Passwort zu verbinden.

von Paramiko Import util, sshclient, autoaddpolicy
client = sshclient ()
Klient.load_system_host_keys ())
Klient.load_host_keys ("/home/linuxhint/.SSH/Bekannte_Hosts ")
Klient.set_missing_host_key_policy (autoaddpolicy ())
Klient.Connect (Hostname = "LinuxHint.com ", userername =" admin ", password =" adminPasword "))
Klient.schließen()

Wenn Sie beim Importieren der Paramiko SSHClient -Klasse auf Probleme stoßen, lesen Sie die folgende Stackoverflow -Frage:

https: // stackoverflow.com/Fragen/29378234/Python-Import-Paramiko-Error-Cannot-Import-Name-Util

SSH über Key anschließen

Wie wir alle wissen, ist das Anschließen von SSH über Schlüssel sicherer als ein Rohkennwort zu verwenden. Paramiko weiß dies und ermöglicht es Ihnen, die Schlüsseldatei zu übergeben und eine Verbindung zum Zielsystem herzustellen.

Betrachten Sie den folgenden Code.

Aus Paramiko import SSHClient, autoaddpolicy
client = sshclient ()
Klient.load_system_host_keys ())
Klient.load_host_keys ('/home/linuxhint/.SSH/PAWN_HOSTS ')
Klient.set_missing_host_key_policy (autoaddpolicy ())
Klient.Connect ('LinuxHint.com ', userername =' admin ', key_filename =' ssh_key.PEM ', Passphrase =' AdminpassPhrase ')
Klient.schließen()

Ausführen von Befehlen über SSH

Sobald Sie über SSH (über Paramiko) Zugriff auf das System erhalten haben, können Sie eine Reihe von Befehlen ausführen. Betrachten Sie den folgenden Code -Snippet:

Aus Paramiko import SSHClient
client = sshclient ()
Klient.load_system_host_keys ())
Klient.Connect ('LinuxHint.com '))
Stdin, Stdout, Stderr = Client.exec_command ('bash')
Stdin.schließen()
Stdout.schließen()
Stderr.schließen()
Klient.schließen()

Zu diesem Zeitpunkt wissen Sie, wie Sie die Paramiko -Bibliothek verwenden, um SSH zu automatisieren. Wie Sie sich vorstellen können, ist dies kein umfassender Paramiko. Ziel war es, Ihnen seine Implementierung zu zeigen.

Weitere Informationen finden Sie unter umfassenderen Materialien wie:

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

Was ist Netmiko?

Netmiko ist sehr beliebt und ähnelt Paramiko mit einigen signifikanten Unterschieden:

  • Geräteunterstützung
  • Leistung

Wenn Sie an realen Netzwerken arbeiten, werden Sie auf verschiedene Gerätemodelle stoßen. Daher benötigen Sie ein zuverlässiges Tool, mit dem Sie den Prozess automatisieren können. In einigen Fällen können Sie Paramiko aufgrund von Einschränkungen der Geräteunterstützung nicht verwenden, was zu Verzögerungen und Abstürzen führt, die die unterstützten Geräte in der offiziellen Dokumentation überprüfen können. Es ist auch erheblich langsamer als Netmiko.

Paramiko ist eher ein generisches SSH -Modul, mit dem Sie bestimmte SSH -Aufgaben automatisieren können. Im Gegensatz dazu ist Netmiko breiter und gut optimiert für die Verwaltung von Netzwerkgeräten wie Switches und Routern.

Abstraktion ist der andere Vorteil der Verwendung von NetMiko. Netmiko bietet eine einfache Funktion, mit der Sie Paging deaktivieren können. Beispielsweise könnte eine Ausgabe aus der SSH -Sitzung mehr als eine Seite betragen. Mit regelmäßigen SSH-Sitzungen müssen Sie einen eingabefreundlichen Raum hinzufügen, um die nächste Seite anzuzeigen. Netmiko bietet Ihnen eine Möglichkeit, dies zu überschreiben.

Die Vorteile von Netmiko gegenüber Paramiko sind:

  • Stellen Sie sich automatisch über SSH an Netzwerkgeräte her.
  • Es bietet eine einfachere Ausführung von Showbefehlen und Datenausgaben.
  • Bietet eine einfachere Funktionalität für Konfigurationsbefehle, einschließlich Commit -Aktionen.
  • Support für Multi-Geräte über Netzwerkgeräteanbieter und -plattformen hinweg.

So installieren Sie NetMiko

Die Installation von NetMiko ist ebenfalls relativ einfach:

Sie müssen lediglich sicherstellen, dass Sie Python und Pip auf Ihrem System installiert haben und den Befehl ausführen:

PIP Installieren Sie NetMiko
Python -M PIP Installieren Sie NetMiko

Verbindung zu SSH über NetMiko herstellen

Die Verbindung zu Geräte -SSH -Sitzungen mit NetMiko ist sehr einfach. Denken Sie daran, dass Netmiko für Geräte wie Router und nicht für nicht generische SSH optimiert ist.

Betrachten Sie den Code -Snippet unten.

# Module importieren
von netmiko import connecthandler
# Geräteinformationen im Wörterbuchformat.
Gerät_Config = "Device_type": "cisco_ios",
"IP": "192.168.0.1 ",
"Benutzername": "Admin" ",
"Passwort": "Passwort",
"Geheimnis": "Passwort"

Connection = ConnectHandler (** Device_config)

Mit dem obigen einfachen Code haben Sie eine SSH -Verbindung zum Gerät. Sie können die Geräteinformationen auch direkt übergeben, anstatt sie an ein Wörterbuch weiterzugeben.

Sobald Sie eine SSH -Sitzung haben, können Sie Befehle mit der Funktion "send_command () ausführen. Von NetMiko unterstützte Funktionen umfassen:

Netmiko häufig verwendete Methoden:

  • net_connect.SEND_COMMAND () - Diese Funktionen sendet Befehle einen Netzwerkkanal und senden die Ausgabe basierend auf dem Muster zurück.
  • net_connect.send_command_timing () - Gibt die Ausgabe basierend auf dem Timing von einem Befehl zurück, der einen Netzwerkkanal abgesendet hat.
  • net_connect.send_config_set () - Anwendet Konfigurationseinstellungen auf Remote -Geräte.
  • net_connect.SEND_CONFIG_FROM_FILE () - Anwendet Konfigurationseinstellungen aus einer externen Datei
  • net_connect.save_config () - exportiert und speichert die laufende Konfiguration als Startkonfiguration.
  • net_connect.enable () - Fragen Sie das Gerät zum Aktivieren der Aktivierungsmodus ab.
  • net_connect.find_prompt () - Geben Sie die aktuelle Router -Eingabeaufforderung zurück
  • net_connect.commit () - führt Commit -Befehle auf Geräten wie Juniper und iOS -XR aus
  • net_connect.trennen () - endet die Sitzungen
  • net_connect.Write_Channel () - Aktiviert ein niedriges Level Write
  • net_connect.Read_Channel () - Aktiviert LEAD LEAD.

Wie bereits erwähnt, ist dies keine Anleitung zur Verwendung von NetMiko, sondern eine einfache Richtung dessen, was Netmiko und Paramiko sind. Weitere Informationen finden Sie in der offiziellen Dokumentation.

https: // github.com/ktbyers/netmiko

Abschluss

In diesem schnellen Handbuch diskutierten wir, wie Paramiko für generische SSH -Verbindungen und NetMiko -Netzwerk -Geräteverwaltung verwendet werden, um die Unterschiede zwischen den beiden zu veranschaulichen.

Schlussfolgern:

Paramiko Netmiko
Nützlich für die generische SSH -Verwendung Am nützlichsten für die Konfiguration der Netzwerkgeräte.
Begrenzte Unterstützung für eine breite Palette von Netzwerkgeräten. Unterstützt eine breite Palette von Netzwerkgeräten.