사용자 목록을 생성하고 일치하는 사용자 이름을 무시하도록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]