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:
Weitere Informationen finden Sie in den folgenden Ressourcen:
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!