ホームページ  >  記事  >  バックエンド開発  >  Unix コマンドの Paramiko の exec_command で発生する「コマンドが見つかりません」エラーを解決するにはどうすればよいですか?

Unix コマンドの Paramiko の exec_command で発生する「コマンドが見つかりません」エラーを解決するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-21 07:00:03443ブラウズ

How to Resolve

Paramiko の exec_command を使用すると Unix コマンドが「コマンドが見つかりません」エラーで失敗する

「sesu」などの Unix コマンドが「」で失敗するシナリオPython の Paramiko exec_command 経由で実行すると「コマンドが見つかりません」というエラーが発生する場合、根本原因は SSHClient.exec_command.

デフォルトの動作について

SSHClient のデフォルトの動作にある可能性があります。 exec_command は通常、「ログイン」モードで動作したり、セッションに疑似端末を割り当てたりしません。その結果、対話型 SSH セッション中に呼び出される特定の起動スクリプトがバイパスされる可能性があります。この不一致により、環境変数やスクリプトの分岐が通常の対話型セッションとは異なる可能性があります。

問題の修正

この問題に対処するには、次の解決策を検討してください。

  1. コマンドへのフル パスを指定します: PATH に依存する代わりに、コマンドへのフル パス (例: "/bin/sesu test") を使用します。
  2. 起動スクリプトの変更: 起動スクリプトが対話型セッションと非対話型セッションの両方に対して一貫して PATH を設定していることを確認します。
  3. ログイン シェル経由でコマンドを実行します: 「-」を使用します。 -login" スイッチを使用して、ログイン シェル経由でコマンドを明示的に実行します (例: "bash --login -c "sesu test")。
  4. コマンド環境を変更します: 内の環境を変更します。コマンド自体を実行し、重要な変数が正しく設定されていることを確認します。
  5. 擬似端末割り当ての強制 (非推奨): 「get_pty」パラメータを True に設定して、実行チャネルに擬似端末を割り当てます。 。ただし、この方法では予期しない結果が生じる可能性があります。

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

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