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!