Junk-Werte aus der SSH-Ausgabe mit Paramiko entfernen
Beim Abrufen der Ausgabe von der CLI eines Remote-Computers über die SSH-Bibliothek von Paramiko kann es zu unerwünschten Zeichen kommen wie „x1b[2Jx1b[1;1H“ und „u“. Dies sind ANSI-Escape-Codes, die die Ausgabe für Terminal-Clients verschönern.
Ursache und Lösung
Paramikos SSHClient.invoke_shell fordert zur Eingabe eines Pseudo-Terminals auf, was zum Erscheinen dieser Escape-Codes führt Codes. Für die automatisierte Befehlsausführung wird stattdessen die Verwendung von SSHClient.exec_command empfohlen, das das Pseudoterminal nicht standardmäßig zuweist.
<code class="python">stdin, stdout, stderr = client.exec_command('ls')</code>
Alternative Lösungen
Bei Verwendung von Der „Shell“-Kanal ist zwingend erforderlich. Dies ist ohne das Pseudo-Terminal möglich, aber SSHClient.invoke_shell von Paramiko bietet diese Funktion nicht. Stattdessen kann man den „Shell“-Kanal manuell erstellen.
<code class="python"># Not supported by Paramiko SSHClient.invoke_shell channel = ssh_client.get_transport().open_channel("session") channel.exec_command("ls")</code>
Hinweis zur Unicode-Kodierung
Das „u“-Präfix in den Ausgabezeichenfolgen gibt die Unicode-Kodierung an, was auch der Fall sein sollte erhalten bleiben.
Das obige ist der detaillierte Inhalt vonWie eliminiere ich Junk-Werte in der Paramiko-SSH-Ausgabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!