监控服务器存活状态及丢包率
脚本功能:
1.用ping命令探测服务器是否存活, 如果ping不到主机,则发送邮件给MIS
2.如果ping测试主机正常则探测丢包率,当丢包率大于/等于50%,发送邮件给MIS
3.在crontab中设置每5分钟运行一次
脚本如下:
#!/bin/bash
export LC_ALL=C
server_all_list=(10.13.0.1:link 10.13.0.2:fs 10.13.0.3:mail 10.13.0.33:freepbx \ 10.13.0.15:mantis 10.13.0.17:dop 10.13.0.8:cvs 10.13.0.20:svn 10.13.0.11:gaia \ 202.99.96.68:cnc)
date=$(date -d "today" +"%Y-%m-%d_%H:%M:%S")
server_all_len=${#server_all_list[*]}
packet_loss="is packet loss 50%"
host_down="is down"
function send_mail() {
sendEmail -f neo@aaa.com.cn -t neo@aaa.com.cn \
-s mail.aaa.com.cn -u $@ \
-xu neo -xp neo1234
}
i=0
while [ $i -lt $server_all_len ]; do
server_ip=$(echo ${server_all_list[$i]} | awk -F ':' '{print $1}')
server_host=$(echo ${server_all_list[$i]} | awk -F ':' '{print $2}')
if ping -c 4 $server_ip | sed -n "7,9"p > bb.txt; then
if grep $server_ip bb.txt; then
if [ `cat bb.txt | sed -n "2"p | awk '{print $6}' |
sed 's/%//g'` -ge 50 ]; then
echo $date $server_host:$server_ip is packet loss 50% | send_mail $server_host $server_ip $packet_loss
fi
else
echo $date $server_host:$server_ip is down | send_mail $server_host $server_ip $host_down
fi
fi
let i++
done