ホームページ  >  記事  >  バックエンド開発  >  Unix コマンド実行時の Paramiko での「 not found」エラーを解決するにはどうすればよいですか?

Unix コマンド実行時の Paramiko での「 not found」エラーを解決するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-21 07:02:30357ブラウズ

How to Resolve が見つかりません" Unix コマンド実行の Paramiko でエラーが発生しましたか?" /> が見つかりません。「Unix コマンド実行の Paramiko でエラーが発生しました?」 />

Paramiko での「 が見つかりません」エラーによる Unix コマンドの実行

exec_command を使用して特定の Unix コマンドを実行しようとすると、Python の Paramiko ライブラリで問題が発生する場合があります。具体的には、「sh: : not found」というエラーが発生する場合があります。 「ls」などの単純なコマンドは正常に実行される可能性がありますが、「sesu」などの特殊なコマンドは失敗します。

根本原因

デフォルトでは Paramiko の exec_command 関数は実行されませんシェルを「ログイン」モードにするか、擬似端末を割り当てます。この結果、通常の SSH 対話型セッションとは異なる起動スクリプトのセットが供給されます。

解決策

この問題には、いくつかの解決策が対処できます。

  • フルパスを使用します: コマンドへの完全なパスを指定します (例: "/bin/sesu test")。
  • PATH 環境変数を設定します:システム PATH に実行可能ファイルを含むディレクトリが含まれていることを確認します。
  • ログイン シェル経由でコマンドを実行します。 「--login」スイッチを使用します (例: 「bash --login -c」)。 "sesu test"".
  • コマンドの環境を変更します: "PATH=""$PATH;/path/to/sesu" のような構文を使用して、コマンド自体内に特定の環境変数を設定します。 " && sesu test".
  • 疑似端末の割り当てを強制する: exec_command で "get_pty" パラメータを使用しますが、潜在的な副作用に注意してください。

追加の考慮事項

  • LD_LIBRARY_PATH や共有オブジェクトの場所などの環境変数でも問題が発生する可能性があります。
  • さらなる洞察と代替アプローチについては、リンクされたリソースを参照してください。

以上がUnix コマンド実行時の Paramiko での「 not found」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。