#前提已经可以通过mail或mutt客户端发邮件
1.先安装sendmail来发邮件
#yum-yinstallsendmail#/etc/init.d/sendmailstart#chkconfigsendmailon
2.再安装邮件客户端
#yum-yinstallmutt
2.1 为了更好在邮件中显示,设置mutt客户端发送信息
#vim/etc/Muttrcsetcharset="utf-8"#设置发邮件编码setenvelope_from=yessetrfc2047_parameters=yes#解决附件乱码问题setrealname="报警"#发件人别名setuse_from=yes#指定是否显示别名setfrom=monitor@#发送人地址
方法1、通过加失败计数器来判断(误报率低)
#!/bin/bashDATE=`date+%F""%H:%M`IP=/root/monitor/ip.txt#ip地址表MAIL=zhenliang369@foripin$(cat$IP|sed'/^#/d')dofor((i=1;i<=3;i++))doping-c1$ip&>/dev/null[$?-ne0]&&letFailCount+=1;donedone[-z$FailCount]&&FailCount=0#当ping都正常时,FailCount值为空,就设置FailCount值为0,用整数比较if[$FailCount-eq2];then#echo"$IPpingisfailed."echo-e"Date:$DATE\nHost:$ip\nProblem:Pingisfailed,Pleasecheck!!!"|mutt-s"PingMonitor"$MAILfi
#添加任务计划
# crontab -e
*/1 * * * * /root/monitor/ping.sh
done
方法二、通过ping一个包的状态判断(误报率低,建议此方法)
#!/bin/bashMAIL="baojingtongzhi@huangxiaohong@"foripin$(catip_list|sed"/^#/d")#ip_list是当前目录下IP表doping-c1$ip&>/dev/null#三个ping有一个能通,说明服务器正常a=$?sleep2ping-c1$ip&>/dev/nullb=$?sleep2ping-c1$ip&>/dev/nullc=$?sleep2DATE=$(date+%F""%H:%M)if[$a-ne0-a$b-ne0-a$c-ne0];thenecho-e"Date:$DATE\nHost:$ip\nProblem:Pingisfailed."|mail-s"Ping$ipfailedFrom255.252"$MAIL#else#echo"$ippingissuccessful."fidone
方法三、通过丢包率来判断是否正常(误报率高)
#!/bin/bashwhiletruedoDATE=`date+%F""%H:%M`MAIL="zhenliang369@"foripin$(catip_list|sed"/^#/d")#ip_list是当前目录下IP表donum=$(ping-c2$ip|grep"100%packetloss"|wc-l)if[$num==1];thenecho-e"Date:$DATE\nHost:$i\nProblem:Pingisfailed."|mail-s"Ping$ifailedFrom255.252"$MAILfidonesleep30done
如果觉得《Shell脚本Ping监控主机是否存活并发邮件报警(三种方法)》对你有帮助,请点赞、收藏,并留下你的观点哦!