我有下面的脚本,它创建用户列表并过滤ignore.txt 文件以忽略匹配的用户名。我想在多个主机(例如 hostA、hostB、hostC)上运行此脚本。就像如果我在一台服务器上运行,它应该在其他 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]