shell脚本(check_machine.sh)
(有一个前提条件是本机对其他需要检查的机器是已经通过ssh免密登陆的了,否则的话执行脚本后会提示输入root密码。对多台服务器进行免密登陆的步骤
#!/bin/bash
dir_home=/root/test
filename=test.txt
num=`cat $1 | wc -l`
Date=`date +%Y-%m-%d%t%H:%M:%S` #显示当前时间,格式:2019-10-21 21:41:47
echo -e "\033[034m "$Date" \033[0m"
for ((i=1;i<="$num";i++))
do
host_name=`sed -n "$i"p $dir_home/$filename | awk '{print $1}'`
host_ip=`sed -n "$i"p $dir_home/$filename | awk '{print $2}'`
check_cpu=`ssh "$host_ip" top -bn 1 -i -c | grep Cpu | awk -F, '{print $4}' | awk '{print $1}'`
check_mem=`ssh "$host_ip" free -m | grep M | awk '{print $4}'`
check_disk=`ssh "$host_ip" df -h | head -2 | tail -1 | awk '{print $5}'`
check_server=`ssh "$host_ip" ss -luntp | awk '{print $7}' | awk -F\" '{print $2}' | grep -v ^$ | sort -u`
#####################功能区###################################
echo -e "\033[036m ################################################################################# \033[0m"
echo -e "\033[032m "$host_name" 主机 "$host_ip" 的情况如下: \033[0m"
echo -e "\033[035m CPU空闲率: $check_cpu \033[0m"
echo -e "\033[034m 空闲内存的大小: $check_mem \033[0m"
echo -e "\033[031m 已用磁盘空间: $check_disk \033[0m"
echo -e "\033[033m 该机器开启的服务: \n $check_server \033[0m"
done
服务器信息表(test.txt)
########因为是个人服务器,所以真实ip就不再这里放出来了#####
big_cat 127.0.0.1
hongkong 10.10.10.10
vultr 11.11.11.11
执行结果(bash check_machine.sh test.txt)
可以使用定时任务进行自动执行该脚本,并且将结果写在一个logs文件中
crontab -e
59 8,11,14,17,20,21 * * * echo " " >> /root/logs
0 9,12,15,18,21,00,3,6 * * * bash /root/test/check_machine.sh /root/test/test.txt >> /root/logs