SSH mit Python

Manav Narula 30 Januar 2023
  1. Verwenden Sie die Bibliothek paramiko in Python, um SSH-Verbindungen zu erstellen und Befehle auszuführen
  2. Verwenden Sie das Modul subprocess, um SSH-Verbindungen zu erstellen und Befehle auszuführen
SSH mit Python

SSH (steht für Secure Socket Shell) ist ein häufig verwendetes Netzwerkprotokoll für sichere, verschlüsselte Kommunikationsdienste über ein unbekanntes und unsicheres Netzwerk. Es ermöglicht uns das Senden von Befehlen zwischen zwei Geräten über ein solches Netzwerk aus der Ferne und hat viele Anwendungen.

Python verfügt über Module, die eine solche SSH-Ausführung ermöglichen. In diesem Lernprogramm wird erläutert, wie Shell-Befehle nach dem Sichern der SSH-Verbindung auf einem Remote-Gerät ausgeführt werden.

Verwenden Sie die Bibliothek paramiko in Python, um SSH-Verbindungen zu erstellen und Befehle auszuführen

Das Modul paramiko wird häufig zur Implementierung von SSH-Protokollen in Python verwendet. Es ermöglicht sowohl die server- als auch die clientseitige Kommunikation.

Überprüfen Sie den folgenden Code, um Shell-Befehle auf einem Remote-Gerät mit diesem Modul auszuführen.

ssh = paramiko.SSHClient()
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)

Die Funktion SSHClient() gibt eine SSH-Serversitzung an. Wir stellen eine Verbindung zum Gerät her, indem wir die richtigen Authentifizierungsdetails in der Funktion Verbinden verwenden. Die erforderlichen Befehle können auf diesem Gerät mit der Funktion exec_command() ausgeführt werden.

Ein anderes Modul namens spur ist von diesem Modul abgeleitet, hat aber eine etwas bessere Schnittstelle.

Verwenden Sie das Modul subprocess, um SSH-Verbindungen zu erstellen und Befehle auszuführen

Mit der Funktion check_output() aus dem Modul subprocess können Befehle ausgeführt werden, die an das Modul übergeben werden, und die Funktion gibt die Ausgabe dieses Befehls zurück. Mit dieser Funktion können wir kennwortlose SSH-Verbindungen erstellen, um die erforderlichen Befehle auszuführen.

Der folgende Code zeigt ein Beispiel dafür.

subprocess.check_output(["ssh", "my_server", "echo /*/"])

Eine andere Methode, die von diesem Modul aus verwendet werden kann, ist Popen(). Es ähnelt der Funktion os.Popen() des Moduls os, Befehle und externe Programme auszuführen. In diesem Modul ist der Popen eine Klasse und keine Methode. Die Verwendung ist etwas kompliziert, da verschiedene Parameter zusammen mit dem erforderlichen Befehl angegeben werden müssen. Es kombiniert alle 4 Funktionen von os.Popen() zu einer. Der Befehl wird auch als separater Prozess ausgeführt. Wir können damit SSH-Verbindungen erstellen und Befehle ausführen, wie unten gezeigt.

subprocess.Popen(
    "ssh {user}@{host} {cmd}".format(user=user, host=host, cmd="ls -l"),
    shell=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
).communicate()
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn