如果没有运维人员或运维软件,但是又面临在一个集群中每台机器都执行一个命令时,总不能真的登录每一台吧。那这里就起一个简单的命令分发执行脚本。
0、确保脚本所在的机器能够免密登录到集群其他机器
1、将集群的IP都写入一个文件中
touch /root/hosts 创建一个空文件
vi /root/hosts 分行输入集群中所有机器的IP
2、编写命令分发脚本
touch /root/xexec.sh
vi /root/xexec.sh 输入下面的脚本代码
#!/bin/bash
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin"
for i in $(cat /root/hosts);do
echo -------$i-------
ssh $i "$*"
done
如果机器数量少,可以替换第三行语句为
for i in hadoop101 hadoop102 hadoop103;do hadoop101是Hosts中配置的IP映射
如果机器IP配置的映射名有规律,也可以替换第三行语句为
for((i=101; i<104; i++));do
同时后面的 $i 替换为 hadoop$i
3、测试
/root/xexec.sh free -h 查询集群所有机器的内存使用情况