Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebt man den Fehler „Befehl nicht gefunden“ in Python Paramiko exec_command?

Wie behebt man den Fehler „Befehl nicht gefunden“ in Python Paramiko exec_command?

DDD
DDDOriginal
2024-10-21 06:58:30768Durchsuche

How to Fix

Unix-Befehle schlagen mit „Befehl nicht gefunden“ in Python Paramiko exec_command fehl

Beim Ausführen von Unix-Befehlen mit Pythons Paramiko exec_command kann es zu Problemen kommen ein Fehler wie „ nicht gefunden.“ Dieses Problem tritt insbesondere auf, wenn der Befehl sesu verwendet wird, während andere Befehle wie ls erfolgreich ausgeführt werden.

Grundlegende Ursache

Die Ursache liegt im Standardverhalten von SSHClient.exec_command. die keine „Login“-Shell ausführt und der Sitzung kein Pseudo-Terminal zuweist. Infolgedessen werden möglicherweise unterschiedliche Startskripte ausgeführt und bestimmte Umgebungsvariablen werden möglicherweise nicht festgelegt.

Mögliche Lösungen

Um dieses Problem zu beheben, können verschiedene Ansätze gewählt werden:

  1. Verwenden Sie einen vollständigen Befehlspfad:Verwenden Sie den vollständigen Pfad zur ausführbaren Sesu-Datei, um sicherzustellen, dass der Befehl unabhängig von der Umgebung ist.
  2. Startskripte anpassen: Ändern Sie Startskripte, um PATH sowohl für interaktive als auch für nicht interaktive Sitzungen konsistent festzulegen.
  3. Login-Shell explizit aufrufen:Führen Sie das Skript mit --login mit kompatiblen Shells aus, wie zum Beispiel:
bash --login -c "sesu test"
  1. Befehlsumgebung ändern: Ändern Sie den Befehl selbst, um bestimmte Umgebungseinstellungen einzuschließen:
PATH="$PATH;/path/to/sesu" && sesu test
  1. Pseudo-Terminal-Verwendung erzwingen: (Nicht empfohlen) Aktivieren Sie die Pseudo-Terminal-Zuweisung, indem Sie get_pty auf True setzen:
stdin,stdout,stderr = ssh.exec_command('sesu test', get_pty=True)

Zusätzliche Überlegungen

  • Überprüfen Sie LD_LIBRARY_PATH und stellen Sie sicher, dass freigegebene Objekte genau lokalisiert werden.
  • Weitere Einblicke finden Sie in diesen Ressourcen:

    • [Unterschiede von Umgebungsvariablen bei der Verwendung von Paramiko](https ://stackoverflow.com/questions/13781377/environment-variable-differences-when-using-paramiko)
    • [Bestimmte Unix-Befehle schlagen mit „... nicht gefunden“ in JSch fehl](https:// stackoverflow.com/questions/44950115/certain-unix-commands-fail-with-not-found-when-executed-through-java-using-jsch)

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Befehl nicht gefunden“ in Python 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