Python の Paramiko Exec_command での Unix CommandNotFound エラーを解決するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-21 07:02:02
オリジナル
707 人が閲覧しました

How to Resolve Unix CommandNotFound Error in Python's Paramiko Exec_command?

Paramiko Exec_command での Unix CommandNotFound エラー

Python の Paramiko exec_command モジュールを介して「sesu」などの特定の Unix コマンドを実行すると、次のような問題が発生する可能性があります。 「コマンドが見つかりません」エラーが発生します。この問題は、通常、exec_command メソッドが「ログイン」モードで動作しないために発生します。その結果、標準の対話型 SSH セッションとは異なる環境変数と起動スクリプトのセットが取得されることになります。

考えられる解決策:

1.コマンドへのフル パスを指定します:

exec_command 引数でコマンドへのフル パスを使用します。たとえば、「sesu テスト」の代わりに「/bin/sesu テスト」を使用します。対話型 SSH セッション内で「that」コマンドを使用して完全パスを確認できます。

2.起動スクリプトの調整:

起動スクリプト (.bash_profile など) が対話型セッションと非対話型セッションの両方で PATH 環境変数を均一に設定していることを確認します。

3. --login スイッチを使用します:

「bash --login -c "sesu test" など、「--login」スイッチを指定したログイン シェルを使用してコマンドを実行します。

4.コマンドで環境変数を変更する:

コマンド自体内で環境変数を直接変更します。一般的な Unix システムでは、次の構文が適用されます: "PATH="$PATH;/path/to/sesu" && sesu test."

5. Force Pseudo Terminal Allocation (非推奨):

get_pty=True パラメータを使用して、実行チャネルの疑似端末割り当てを有効にします。ただし、この方法では予期しない結果が生じる可能性があります。

追加の考慮事項:

  • LD_LIBRARY_PATH 環境変数と共有オブジェクトの場所でも同様の問題が発生する可能性があります。
  • 詳細については、次のリソースを参照してください。

    • Paramiko 使用時の環境変数の違い
    • 特定の Unix コマンドが「... 見つかりません」で失敗する" JSch
を使用して Java を通じて実行された場合

以上がPython の Paramiko Exec_command での Unix CommandNotFound エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!