shell脚本实现批量查看当前服务器集群的基本信息
1.使用脚本将公钥批量分发至Ansible被管理端服务器
#分发秘钥脚本一:
#!/bin/bash
for ip in `cat /opt/server/ip.txt`
do
sshpass -p'密码' ssh-copy-id -i /root/.ssh/id_dsa.pub $ip -o StrictHostKeyChecking=no 1>/dev/null 2>/var/log/ssh.log
if [ $? -eq 0 ]
then
echo "主机 $ip 分发秘钥成功"
else
echo "主机 $ip 分发秘钥失败"
fi
done
2.ansible主机清单文件添加被控主机
在/etc/ansible/hosts中最后一行添加主机ip
[node]
192.168.xx.xxx
192.168.xx.xxx
3.测试是否控制成功
ansible all --list #查看被控节点的主机
4.在/etc/ansible下编写playbook(以.yml结尾的文件)
vim /etc/ansible/mount.yml
- hosts: node
user: 用户名
tasks:
- name: 复制脚本到被控节点
copy: src=/opt/脚本.sh dest=/root
- name: 执行脚本
shell: bash /root/脚本.sh
5.检查剧本的语法并运行
ansible-playbook mount.yml --check #语法没有问题的话直接运行
ansible-playbook mount.yml
6.编写脚本
#!/bin/bash
for ip in `cat /opt/server/ip.txt`
do
#内存使用情况
a=`ssh root@$ip free -h|awk 'NR==2 {print $2}'`
b=`ssh root@$ip free -h|awk 'NR==2 {print $3}'`
c=`ssh root@$ip free -h|awk 'NR==2 {print $4}'`
#交换分区使用情况
a1=`ssh root@$ip free -h|grep Swap|awk '{print $2}'`
b1=`ssh root@$ip free -h|grep Swap|awk '{print $3}'`
c1=`ssh root@$ip free -h|grep Swap|awk '{print $4}'`
#硬盘使用情况
d=`ssh root@$ip df -h / |awk 'NR==2{print $2}'`
e=`ssh root@$ip df -h / |awk 'NR==2{print $4}'`
#CPU使用情况
cpu_a=`ssh root@$ip cat /proc/cpuinfo|awk -F: 'NR==5 {print $2}'`
cpu_b=`ssh root@$ip "grep -c 'model name' /proc/cpuinfo"`
cpu_c=`ssh root@$ip top -b -n 1 | grep Cpu|awk -F"," '{print $4}'|cut -f 1 -d "."`
cpu_d=`ssh root@$ip uptime |awk -F"," '{print $3,$4,$5,$6}'`
to=`date -d "0 day" +%Y年%m月%d日`
hostname=`ssh root@$ip hostname`
ping -c2 $ip >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo -e "\033[32m############### 主机$ip使用情况 ###############\033[0m"
echo "主机名称:$hostname"
echo "当前时间:$to"
echo "主机可以ping通"
echo "主机IP:$ip"
echo "内存使用情况:"
echo "总内存:$a 使用内存:$b 剩余内存:$c"
echo "交换分区使用情况:"
echo "总内存:$a1 使用内存:$b1 剩余内存:$c1"
echo "系统盘总容量:$d 系统盘剩余容量:$e"
echo "CPU型号名称:$cpu_a"
echo "CPU总核心数:$cpu_b"
echo "CPU空闲比为:$cpu_c%"
echo "CPU负载情况:$cpu_d"
echo -e "\033[32m#####################################################\033[0m"
else
echo "主机 $ip ping不通"
fi
done
小结
此脚本需要先到管理机的/opt/server/ip.txt文件中写入要批量查看的服务器ip地址
再使用循环语句批量分发密钥再进行查看服务器当前的使用情况