SSH mit Python
-
Verwenden Sie die Bibliothek
paramiko
in Python, um SSH-Verbindungen zu erstellen und Befehle auszuführen -
Verwenden Sie das Modul
subprocess
, um SSH-Verbindungen zu erstellen und Befehle auszuführen
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 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