1.监控目标主机状态
监控方法通过ping
命令(ICMP
协议),如果能ping通,则表示目标主机处于上线状态;反之,则处理下线状态。由于存在网络延迟情况,可能在ping
的过程中产生假报警的问题,所以在ping
的取值上采用3次报警阈值设置,若3次全部失败,才会报警并产生预警信息。
#!/bin/bash
#Author: zking
#监控目标主机状态
ead -p "请输入目标主机的IP地址:" -t 30 ip
fail_count=0
for ((i=1;i<4;i++)) do
# -c 1表示ping 1次
if ping -c 1 $ip >/dev/null;then
#ping_count"$i"=1
let fail_count=0
echo "$ip 目标主机能ping通"
break;
else
#ping_count"$i"=0
let fail_count++
echo "$ip 目标主机不能ping通"
fi
#sleep 0.3
done
echo "失败次数为:$fail_count"
if [ $fail_count -eq 0 ];then
echo "$ip is up"
else
echo "$ip is down"
fi
2.监控硬盘的使用率
实时监控硬盘的使用率,并将超过预警值的硬盘信息通过邮件的方式发送出去。
#!/bin/bash
#将系统日期格式化处理
DATE=$(date +%F" "%H:%M)
# 获取ens33的本地IP地址
IP=$(ifconfig ens33 | grep 'inet' | awk 'NR==1{print $2}')
# 定义邮箱地址
#MAIL="529503476@qq.com"
# 获取磁盘盘符大小情况
TOTAL=$(fdisk -l | grep 'Disk /dev/' | awk -F'[: ]' '{print ($2"="$4$5)}')
# 获取/dev/磁盘使用情况
PART_USE=$(df -h | awk '/^\/dev/{print ($1"="int($5)"="$6)}')
for i in $PART_USE; do
PART=$(echo $i |cut -d"=" -f1)
USE=$(echo $i |cut -d"=" -f2)
MOUNT=$(echo $i |cut -d"=" -f3)
if [ $USE -gt 80 ]; then
echo "
Date: $DATE
Host: $IP
Total: $TOTAL
Problem: $PART=$USE($MOUNT)
"
fi
done