複数のホストでスクリプトを実行する

複数のホストでスクリプトを実行する

ユーザーリストを生成し、一致するユーザー名を無視するようにignore.txtファイルをフィルタリングする次のスクリプトがあります。複数のホスト(ホストA、ホストB、ホストCなど)でこのスクリプトを実行したいと思います。あるサーバーで実行している場合は、他の4つのサーバーで実行し、出力を取得して出力をメールで送信する必要があります。

#!/bin/sh
(
echo List of users in PRD 
echo
date
echo
grep -wvf ignore.txt /etc/passwd | awk -F: -v OFS=: '{print $1,$3,$5}' | sort 
) | tee "$(hostname)"_userlogins.txt |
mailx -s file [email protected]

ベストアンサー1

pdshを試してください。インターネットには多くの例がありますプロジェクトページ

単純なbashスクリプトを使用したい場合:

#!/bin/bash
HOSTS="host1 host2 host3"
USER=root
CMD="ls"
for host in $HOST; do
  ssh ${USER}:{$host} "$CMD"
done

sshすべての場合で、キーを使用してパスワードなしの認証を調整し、コマンドに追加する必要があります。-i /path/to/key

使用例:

#!/bin/bash
HOSTS="host1 host2"
N=1
FILE=report.txt
echo "List of users in PRD" > $FILE
date >> $FILE

for host in $HOSTS; do
  ssh $host -l root cat /etc/passwd|cut -d ':' -f 1 >/tmp/temp 2>/dev/null
  echo "====host $host====" >> $FILE
  cat /tmp/temp | tail -n +$N |grep -wvf ignore.txt|sort >> $FILE
done

rm -f /tmp/temp

#mailx -s $FILE [email protected]

おすすめ記事