Python

Was ist der Unterschied zwischen Paramiko und Netmiko?

Was ist der Unterschied zwischen Paramiko und Netmiko?

Beim Thema Vernetzung gibt es viele Perspektiven und man kann nicht mit allen Geräten in der realen Welt interagieren. Alle Netzwerkgeräte haben jedoch ähnliche Funktionen, die, wenn sie beherrscht werden, automatisierbar sind.

Wie in meinen anderen Tutorials erwähnt, sind Programmierer faul und versuchen immer, die Effizienz zu verbessern - und tun so am wenigsten Arbeit 🙂 - und wenn es um die Automatisierung netzwerkbezogener Probleme geht, greifen viele oft zu.

In der heutigen Kurzanleitung stelle ich Ihnen die Automatisierung von SSH mit zwei beliebten Python-Bibliotheken vor: Paramiko und Netmiko. Wir werden einfache Python-Skripte mit den beiden Bibliotheken erstellen, um SSH zu automatisieren und mit Netzwerkgeräten zu interagieren.

Ich habe mich für diesen Ansatz entschieden, weil ein Leitfaden, der sich hauptsächlich auf die Unterschiede zwischen Paramiko und Netmiko konzentriert, zu kurz wäre - eine einfache Tabelle würde ausreichen - und kein Konkret. Wenn Sie diesen Ansatz wählen, können Sie besser mit ihnen experimentieren und sehen, welche was und wie bewirken.

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. Im Grunde bedeutet es Paramiko ist eine Python-Bibliothek für die Interaktion mit SSH.

Jetzt:

Wenn wir uns bei einem Server anmelden möchten, wissen wir, dass wir zum Terminal-cmd, xterm, MobaXterm oder einfach zum Gnome-Terminal-Login gehen und dann Befehle ausführen.

Mal sehen, wie Paramiko dabei helfen kann.

So installieren Sie Paramiko

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

sudo pip installieren Paramiko
Python -m pip install paramiko

Wenn Sie aus der Quelle erstellen möchten, verwenden Sie die bereitgestellte Ressource im offiziellen Paramiko GitHub-Repository:

https://github.com/paramiko/paramiko

Verbindung zu SSH mit Paramiko

Um mit Paramiko eine Verbindung zu SSH herzustellen, verwenden wir die Methode connect(), die den Parameter hostname erfordert – sie unterstützt auch andere Parameter, aber da wir diese nicht benötigen, können wir sie vorerst ignorieren.

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=Keine, banner_timeout=Keine, auth_timeout=Keine, gss_trust_dns=True, passphrase=Keine, disabled_algorithms=Keine)

Mit dieser Funktion, die in paramiko . verfügbar ist. Klient.SSHClient.connect(), verbindet sich mit dem angegebenen Hostnamen und authentifiziert ihn. Das Zielsystem wird gegen die vorhandenen lokalen Systemschlüssel geprüft (trusted).

Wenn Sie eine bestimmte Hostdatei haben, können Sie die Methode load_host_keys() verwenden und den Paramiko SSH-Client so einstellen, dass er einen unbekannten Host zu paramiko hinzufügt.AutoAddPolicy(). Wenn Sie den Client in nicht vertrauenswürdigen Systemen verwenden, vermeiden Sie die Verwendung von paramiko.AutoAddPolicy.

SSH mit einem Passwort verbinden

An der Verbindungsmethode können wir sehen, dass wir die Parameter für Benutzername und Passwort haben, mit denen wir uns mit dem System verbinden 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/known_hosts")
Klient.set_missing_host_key_policy(AutoAddPolicy())
Klient.connect(hostname="linuxhint.com", username="admin", password="AdminPassword")
Klient.schließen()

Wenn beim Importieren der Paramiko SSHClient-Klasse Probleme auftreten, lesen Sie die folgende Stackoverflow-Frage:

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

SSH über Schlüssel verbinden

Wie wir alle wissen, ist die Verbindung mit SSH über einen Schlüssel sicherer als die Verwendung eines Rohpassworts. Paramiko weiß das und erlaubt Ihnen, die Schlüsseldatei zu übergeben und sich mit dem Zielsystem zu verbinden.

Betrachten Sie den Code unten.

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

Ausführen von Befehlen über SSH

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

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()

An dieser Stelle wissen Sie, wie Sie die Paramiko-Bibliothek verwenden, um SSH zu automatisieren. Wie Sie sich vorstellen können, ist dies kein umfassender Paramiko-Leitfaden, und wir gehen nicht auf Details ein, die sich auf die Funktion des Tools beziehen. Ziel war es, Ihnen die Umsetzung zu zeigen.

Weitere Informationen finden Sie in umfassenderen Materialien wie:

https://docs.paramiko.org/de/stabil/
https://github.com/paramiko/paramiko

Was ist Netmiko?

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

Bei der Arbeit in realen Netzwerken 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. Sie können die unterstützten Geräte in der offiziellen Dokumentation überprüfen. 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 für die Verwaltung von Netzwerkgeräten wie Switches und Routern optimiert.

Abstraktion ist der andere Vorteil der Verwendung von Netmiko. Netmiko bietet eine einfache Funktion, mit der Sie das Paging deaktivieren können. Beispielsweise kann eine Ausgabe der SSH-Sitzung mehr als eine Seite umfassen. Bei regelmäßigen SSH-Sitzungen müssen Sie ein eingabeähnliches Leerzeichen hinzufügen, um die nächste Seite anzuzeigen. Netmiko bietet Ihnen eine Möglichkeit, dies zu überschreiben.

Vorteile von Netmiko gegenüber Paramiko sind:

So installieren Sie Netmiko

Auch die Installation von Netmiko ist relativ einfach:

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

pip install netmiko
python -m pip install netmiko

Verbindung zu SSH über Netmiko

Das Herstellen einer Verbindung zu SSH-Sitzungen von Geräten mit Netmiko ist sehr einfach. Denken Sie daran, dass Netmiko eher für Geräte wie Router optimiert ist und nicht für generisches SSH.

Betrachten Sie das folgende Code-Snippet.

#Module importieren
von netmiko importieren ConnectHandler
# Geräteinfo im Wörterbuchformat.
Gerätekonfiguration =
„Gerätetyp“: „cisco_ios“,
„ip“: „192“.168.0.1”,
„Benutzername“: „Administrator“,
"Passwort": "Passwort",
„geheim“: „Passwort“

Verbindung = 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 zu übergeben.

Sobald Sie eine SSH-Sitzung haben, können Sie Befehle mit der Funktion send_command() ausführen. Zu den von netmiko unterstützten Funktionen gehören:

Häufig verwendete Netmiko-Methoden:

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

https://github.com/ktbyers/netmiko

Fazit

In dieser Kurzanleitung haben wir die Verwendung von Paramiko für generische SSH-Verbindungen und die Netmiko-Netzwerkgeräteverwaltung besprochen und die Unterschiede zwischen den beiden veranschaulicht.

Schlussfolgern:

Paramiko Netmiko
Nützlich für generische SSH-Nutzung Am nützlichsten für die Konfiguration von Netzwerkgeräten.
Eingeschränkte Unterstützung für eine Vielzahl von Netzwerkgeräten. Unterstützt eine breite Palette von Netzwerkgeräten.
So ändern Sie Mauszeiger- und Cursorgröße, Farbe und Schema unter Windows 10
Der Mauszeiger und der Cursor in Windows 10 sind sehr wichtige Aspekte des Betriebssystems. Dies kann auch für andere Betriebssysteme gesagt werden, a...
Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...
Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...