首頁 > 後端開發 > Python教學 > 為什麼某些 Unix 指令在 Python 的 Paramiko Exec_Command 中傳回「找不到」錯誤?

為什麼某些 Unix 指令在 Python 的 Paramiko Exec_Command 中傳回「找不到」錯誤?

DDD
發布: 2024-10-21 06:57:02
原創
449 人瀏覽過

Why Do Some Unix Commands Return

Python 的Paramiko 中的Unix 指令出現「找不到」錯誤

嘗試使用Python 在Unix 伺服器上執行指令「sesu」時Paramiko exec_command 時,使用者可能會遇到錯誤訊息「sh: sesu: not found」。此問題僅在某些命令(例如“sesu”)中出現,而其他命令(例如“ls”)可以按預期運行。

此錯誤源自於 SSHClient.exec_command 中的預設行為,該行為不會執行shell 處於「登入」模式且不指派偽終端。因此,命令執行可能與互動式 SSH 會話不同,後者會取得或使用某些啟動腳本和環境變數。

可能的解決方案

建議使用以下解決方案按優先順序排列:

  • 修改命令以指定可執行檔案的完整路徑:
/bin/sesu test
登入後複製
  • 設定啟動腳本以一致設定PATH:
  • 透過登入shell明確運作指令:
bash --login -c "sesu test"
登入後複製
  • 改變指令本身內的環境:
PATH="$PATH;/path/to/sesu" && sesu test
登入後複製
stdin,stdout,stderr = ssh.exec_command('sesu test', get_pty=True)
登入後複製
作為最後的手段(不建議):

以上是為什麼某些 Unix 指令在 Python 的 Paramiko Exec_Command 中傳回「找不到」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板