Linuxの複数のホストがコマンドをバッチで実行します

  分散システムをデプロイする場合、次のシナリオがあります。アプリケーションがN個のLinuxホストにデプロイされます。プロジェクトをデプロイする前に、すべてのホストのJDKバージョンまたはその他のリソース構成が期待を満たしているかどうかを確認する必要があります。すべてのマシンのJDKバージョンを確認してください。それらは同じですか。
  ホストに1つずつログインし、コマンド「java -version」を1つずつ使用して確認すると、タスクは完了できますが、効率は低くなります。効率を上げるために、複数のホストがスクリプトを介してコマンドをバッチで実行できます。実装手順は次のとおりです。

1つは、Linuxホスト設定sshパスワードなしのログイン

  まず、LinuxホストをSSHパスワードなしでログインできるように設定する必要があります。そのうちの1つを信頼できるホストとして使用して、パスワードなしで他のすべてのホストにログインできます。具体的な構成方法については、「信頼関係の構成」を参照してください。2つのLinuxホスト間(およびキャンセル方法) "。

2つ目は、ホストリストファイルhostsを作成する

  vi hostsコマンドは、ホストリストファイルhostsを作成し、ファイル内のすべてのリモートホストを一覧表示します。

$ vi hosts

$ cat hosts 
47.100.247.242
101.132.242.27
47.103.217.188

3、doCommand.shスクリプトを作成します

#!/bin/sh

doCommand()
{
    
    
    hosts=`sed -n '/^[^#]/p' hosts`
    for host in $hosts
        do
            echo ""
            echo HOST $host
            ssh $host "$@"
        done
    return 0
}

    if [ $# -lt 1 ]
    then
            echo "$0 cmd"
            exit
    fi
    doCommand "$@"
    echo "return from doCommand"

第4に、スクリプトファイルdoCommand.shに実行権限を追加します

$ chmod u+x doCommand.sh

5.信頼できるホストでスクリプトコマンドを実行します

  スクリプト実行コマンドの形式は次のとおりです。

./doCommand.sh "[yourcommand]" 

  注:パラメーター[yourcommand]は、信頼できるホストで実行されるコマンドです。

  例は次のとおりです。

$ ./doCommand.sh "java -version"

HOST 47.100.247.242
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

HOST 101.132.242.27
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

HOST 47.103.217.188
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
return from doCommand

  このようにして、スクリプトは各マシンで「java -version」コマンドを実行し、各ホストのJDKバージョン情報を信頼できるホストに返します。

記事の参照:

おすすめ

転載: blog.csdn.net/piaoranyuji/article/details/109802408