描述:
Linux服务器,编写shell脚本,利用ping命令实现网络监控,判断网络是否连通,是否正常,并及时发邮件通知管理员。
应用:监控服务器网络是否连通;监控两地网络是否连通等等。
只需要安装mutt邮件插件,一个简单而强大的邮件插件,用于给管理员发送邮件而不需要邮件服务器。
用最简单的命令实现强大的功能,使用脚本自动化管理。
工具/原料:
原系统命令,再加安装一个邮件发送插件mutt(各位可以去查一下mutt简单而强大的魅力)
方法/步骤:
1.
安装mutt:yum install mutt
新建mutt配置文件:vim /root/.muttrc,添加如下内容:
#如果你收到的邮件乱码,设置以下信息
set charset="utf-8"
set rfc2047_parameters=yes
#如果你想自定义发件人信息,需要进行如下设置
set envelope_from=yes
set use_from=yes
set from=root@163.com
set realname="Andy"
测试:
举例,shell脚本自动给我自己的QQ邮箱发送mail:
Vim /root/mutt.sh添加内容如下:
#!/bin/bash
echo 'test1111' | mutt 695xxx@qq.com -s "这是标题"
执行脚本,然后登录到指定的邮箱里去查看。(没有看到你发送的邮件吧。。。)你发送的邮件被默认为垃圾邮件了。要在QQ邮箱中设置白名单通过验证。(已删除-->删信记录查询-->收信查询-->添加到白名单-->取回)。
收件成功!!!
2.
开始编辑shell脚本:
vim /root/ping.sh,代码如下:
#!/bin/bash
#执行脚本:(/root/ping.sh &)
server1=192.168.180.100
server2=192.168.180.111
mail1=695xxxxxx@qq.com
mail2=530xxxxxx@qq.com
mail3=596xxxxxx@qq.com
mail4=362xxxxxx@qq.com
LOG=/var/shell/ping/ping.log
b=0 #初始赋值为0,刚启动脚本时测试到网络正常则不提示,解决每次启动脚本时都提示网络正常的问题(设置为其他值则每次启动脚本时都提示)。
while [ true ]
do
ping -w 5 $server1 | grep 'icmp_seq' > $file1 \
&& ping -w 5 $server2 | grep 'icmp_seq' > $file2 #检测误报情况!
[ `grep 'time=' $file1 | wc -l` -ge 1 ] > /dev/null \
&& [ `grep 'time=' $file2 | wc -l` -ge 1 ] > /dev/null
a=$?
if [ $a -ne 0 ] #判断执行上面ping命令是否正常,为0则网络正常,否则提示网络中断。
then
if [ $a -ne $b ] #解决网络中断时一直提示的问题。
then
b=$a #给予下次判断网络是否正常。
date >> $LOG
echo "$server1 路由表:" >> $LOG
traceroute -n -m 10 $server1 >> $LOG \
&& echo '-------------------------------------------------' >> $LOG \
&& echo "$server2 路由表:" >> $LOG \
&& traceroute -n -m 10 $server2 >> $LOG \
&& echo '#################################################' >> $LOG \
&& echo '' >> $LOG
echo '' >> $LOG
tail -30 $LOG > /var/shell/ping/ping.txt
echo '警报警报:广州安心通网络中断!!' | mutt $mail1 $mail2 -s '网络中断' -a /var/shell/ping/ping.txt
fi
else
if [ $a -ne $b ] #解决网络正常时一直提示的问题。
then
b=$a #给予下次判断网络是否正常。
date >> $LOG
echo "$server1 路由表:" >> $LOG
traceroute -n -m 10 $server1 >> $LOG \
&& echo '-------------------------------------------------' >> $LOG \
&& echo "$server2 路由表:" >> $LOG \
&& traceroute -n -m 10 $server2 >> $LOG \
&& echo '#################################################' >> $LOG \
&& echo '' >> $LOG
echo '' >> $LOG
tail -30 $LOG > /var/shell/ping/ping.txt
echo '通知:广州安心通网络恢复正常!!' | mutt $mail1 $mail2 -s '网络正常' -a /var/shell/ping/ping.txt
fi
fi
done
3.
执行脚本:sh /root/ping.sh &
并添加到开机启动项即可实现时时监控。
4.
测试:去邮箱查看是否收到邮件。
就这样,轻松监控服务器网络。
注意事项
mutt发送邮件,QQ接收会被黑名单拦截,一定要添加白名单哦,要测试成功可以接收邮件再来测试下面的ping脚本,要不然你会以为是脚本写错了呢!!!
注:本人原创,如需转载,请标明来源!请尊重他人的成果!!