nicht gefunden „Fehler in Paramiko für Unix-Befehlsausführung?“ /> nicht gefunden „Fehler in Paramiko für Unix-Befehlsausführung?“ />
Ausführen von Unix-Befehlen mit dem Fehler „ nicht gefunden“ in Paramiko
Pythons Paramiko-Bibliothek kann beim Versuch, bestimmte Unix-Befehle mit exec_command auszuführen, auf Schwierigkeiten stoßen . Konkret kann der Fehler „sh: : nicht gefunden“ auftreten. Während einfache Befehle wie „ls“ möglicherweise erfolgreich ausgeführt werden, schlagen spezielle Befehle wie „sesu“ fehl.
Ursache
Die Funktion exec_command in Paramiko wird standardmäßig nicht ausgeführt die Shell im „Login“-Modus oder weisen Sie ein Pseudo-Terminal zu. Dies führt dazu, dass ein anderer Satz von Startskripten als in regulären interaktiven SSH-Sitzungen bereitgestellt wird.
Lösungen
Mehrere Lösungen können dieses Problem beheben:
-
Verwenden Sie einen vollständigen Pfad:Geben Sie den gesamten Pfad zum Befehl an, z. B. „/bin/sesu test“.
-
Legen Sie die Umgebungsvariable PATH fest: Stellen Sie sicher, dass der Systempfad das Verzeichnis enthält, das die ausführbare Datei enthält.
-
Führen Sie den Befehl über eine Login-Shell aus:Verwenden Sie den Schalter „--login“, z. B. „bash --login -c“. "sesu test"".
-
Ändern Sie die Umgebung des Befehls: Legen Sie bestimmte Umgebungsvariablen innerhalb des Befehls selbst fest und verwenden Sie dabei eine Syntax wie "PATH=""$PATH;/path/to/sesu" " && sesu test".
-
Pseudo-Terminal-Zuweisung erzwingen: Verwenden Sie den Parameter „get_pty“ in exec_command, achten Sie jedoch auf mögliche Nebenwirkungen.
Zusätzliche Überlegungen
- Es können auch Probleme mit Umgebungsvariablen wie LD_LIBRARY_PATH und gemeinsam genutzten Objektspeicherorten auftreten.
- Weitere Einblicke und alternative Ansätze finden Sie in den verlinkten Ressourcen.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „ nicht gefunden' in Paramiko für die Unix-Befehlsausführung?. 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