複数のサーバーにSSH接続し、OSコマンドではなくアプリケーション固有のコマンドを実行します。

複数のサーバーにSSH接続し、OSコマンドではなくアプリケーション固有のコマンドを実行します。

ソース サーバーからのスクリプトが複数のサーバーに ssh を試行し、オペレーティング システム コマンド (cat、chmod など) 以外のアプリケーション固有のコマンドを実行すると、コマンドが見つからないなどのエラーが発生します。以下はスクリプトです。

for host in $(cat hosts_list.txt)
do
ssh $host chk_auto_up > "cmd_output.txt"
done

コマンドを識別して実行し、ファイルに出力を書き込むためにスクリプトに何を含める必要があるか、誰か助けてくれませんか?

コマンドが見つからないというエラーが表示されます

答え1

次の行を編集するだけです:

ssh $host /path/of/chk_auto_up > "cmd_output.txt"

コマンドの絶対パスを定義します。

答え2

リモートで SSH 経由で外部コマンドを実行する方法の答えを見つけました。

for host in $(cat /***/thishost/**/username/hosts_list.txt)
do
ssh "$host"
. /**/***/*****/*****/******.${HOST}  
chk_auto_up >> "/****/thishost/***/*****/cmd_output.txt"
exit
done

詳細:

  1. hosts_list.txt --> SSHでログインするサーバーのリストがあります
  2. ssh "$host" --> 最初のサーバーで ssh ログインが行われます。
  3. . /**/***/*****/*****/******.${HOST}--> 外部コマンドのバイナリパスはここにあります
  4. chk_auto_up >> "/****/thishost/***/*****/cmd_output.txt" --> コマンドを実行し、出力をソース サーバーに書き込みます。

関連情報