ユーザーリストを生成し、一致するユーザー名を無視するように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]