Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebe ich den Unix CommandNotFound-Fehler in Pythons Paramiko Exec_command?

Wie behebe ich den Unix CommandNotFound-Fehler in Pythons Paramiko Exec_command?

Barbara Streisand
Barbara StreisandOriginal
2024-10-21 07:02:02778Durchsuche

How to Resolve Unix CommandNotFound Error in Python's Paramiko Exec_command?

Unix CommandNotFound-Fehler in Paramiko Exec_command

Wenn Sie bestimmte Unix-Befehle wie „sesu“ über das Paramiko exec_command-Modul von Python ausführen, kann es vorkommen, dass Es tritt der Fehler „Befehl nicht gefunden“ auf. Dieses Problem entsteht, weil die exec_command-Methode normalerweise nicht im „Anmelde“-Modus arbeitet, was dazu führt, dass im Vergleich zu einer standardmäßigen interaktiven SSH-Sitzung ein anderer Satz von Umgebungsvariablen und Startskripten bereitgestellt wird.

Mögliche Lösungen:

1. Geben Sie den vollständigen Pfad zum Befehl an:

Verwenden Sie den vollständigen Pfad zum Befehl in Ihrem exec_command-Argument. Zum Beispiel „/bin/sesu test“ statt „sesu test“. Den vollständigen Pfad können Sie mit dem „which“-Befehl innerhalb einer interaktiven SSH-Sitzung ermitteln.

2. Passen Sie Startskripte an:

Stellen Sie sicher, dass die Startskripte (z. B. .bash_profile) die Umgebungsvariable PATH sowohl für interaktive als auch für nicht interaktive Sitzungen einheitlich festlegen.

3. Verwenden Sie den Schalter „--login“:

Führen Sie den Befehl mit einer Login-Shell mit dem Schalter „--login“ aus, z. B. „bash --login -c „sesu test“.“

4. Umgebungsvariablen im Befehl ändern:

Ändern Sie die Umgebungsvariablen direkt im Befehl selbst. In gängigen Unix-Systemen gilt folgende Syntax: „PATH="$PATH;/path/to/sesu" && sesu test.“

5. Pseudo-Terminal-Zuweisung erzwingen (nicht empfohlen):

Aktivieren Sie die Pseudo-Terminal-Zuweisung für den Exec-Kanal mithilfe des Parameters get_pty=True. Dieser Ansatz kann jedoch zu unerwarteten Ergebnissen führen.

Zusätzliche Überlegungen:

  • Ähnliche Probleme können mit der Umgebungsvariablen LD_LIBRARY_PATH und dem Speicherort gemeinsam genutzter Objekte auftreten.
  • Weitere Informationen finden Sie in den folgenden Ressourcen:

    • Unterschiede bei Umgebungsvariablen bei Verwendung von Paramiko
    • Bestimmte Unix-Befehle schlagen mit „... nicht gefunden“ fehl " bei Ausführung über Java mit JSch

Das obige ist der detaillierte Inhalt vonWie behebe ich den Unix CommandNotFound-Fehler in Pythons Paramiko Exec_command?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn