複数のリモートサーバーの状態を確認する

複数のリモートサーバーの状態を確認する

sudoアクセス権を持つユーザーを使用して、800台のサーバー(1、2、3の順序)にリモートで接続する必要があります。

  1. システムログの状態確認

    • 実行している場合は、手順2に進みます。
    • d サービスが再起動しない場合
  2. /etc/sudoersリモートコンピュータに入る

    • 良いsudo echo "ABC" >> /etc/sudoers
  3. スクリプトで完了した操作をローカルコンピュータ(スクリプトが実行されている場所)のローカルファイルに書き込みます。

リモートでサービスを開始するスクリプトを作成しました。

for i in `cat test1`

do 
{
echo "********************************************$i***************************************************"
sshpass -p '<password>' ssh -t abc@$i "sudo /etc/init.d/httpd start
}
done

注:接続するサーバーはtest1ファイルにあります。

上記の3つを1つのスクリプトに統合する方法を教えてください。

答え1

800台のサーバーは管理することが多いです。他の解決策を検討することを検討する必要があります。

  • 各管理システムでマスターサーバーとミニオンプロセスを使用します。
  • アンシプールこれは塩に似ています。
  • 人形 その他の管理ソフトウェア
  • 展開に応じて、必要な変更をすべてdeb含むパッケージで作業し、それをリポジトリと一緒に展開できます。RPM
  • 同様のデーモン監視装置またはv 実行システムを監視し、syslogd サービスが実行されていることを確認できます。

サイドノート:直接編集はもはや/etc/sudoersベストプラクティスではありません。代わりに、カスタムファイルを配置することを検討し、/etc/sudoers.d/ 次のものを/etc/sudoers含める必要があります。includedir /etc/sudoers.d

答え2

使用しているコマンドが通常のシェルコマンドで予想される正しい戻り値を実装している場合にのみ、次のように使用できます。

sshpass -p '<password>' ssh -t abc@$i "command to check syslog || command to restart service && command to add sudo entry" && local command

アイデアは、各ステップで正しい戻り値に依存することです。command to check syslog失敗した場合は実行しcommand to restart service、成功した場合は実行しますcommand to add sudo entry

sshコマンドは最後のコマンド実行の値を返す必要があります。それで問題ない場合は実行しますlocal command

もちろん、これは非常に粗雑な作業なので、これらのコマンドを別々のsshコマンドに分割し、$?毎回戻り値をチェックして問題を端末またはログファイルに反映できる場合は、より安定しています。

答え3

必要なすべてを含むスクリプトを作成し、SSHを使用してリモートサーバーで実行します。

引用する

ssh root@MachineB 'bash -s' < local_script.sh

スクリプトはローカルスクリプトのように実行されます。マシンB

関連情報