在多个主机上运行脚本

在多个主机上运行脚本

我有下面的脚本,它创建用户列表并过滤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]

相关内容