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

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

私のソースサーバースクリプトは複数のサーバーでsshを試してアプリケーション固有のコマンドを実行しようとしていますが、cat、chmodなどのOSコマンドを除いてはわかります。 command: not Found などのエラーが発生します。以下はスクリプトです。

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" --> コマンドを実行し、出力をソースサーバーに書き込みます。

関連情報