Bash脚本自动检测PING值情况,出现问题发送邮件并写下日志。

脚本是从网上一位高手那里拿来的,但考虑如果是检测局域网服务器的话,当局域网相关网关无法PING通的话,那么发送邮件也是浮云。所以如果发现无法PING通了,自动写下日志双保险,而且方便管理员检测情况。

#!/bin/bash
########################################################################
#此脚本会按照管理员设置时间,定时检测预订网段内IP是否能PING通,如果不能PING通,则发送邮件,并创建日志文件。
#脚本制作:风之翼灵
#如果你有问题,你可以进入 www.fungj.com 询问
########################################################################

<span style="color: #ff0000;">network="10.1.1"</span>
totalup=0
totaldown=0
<span style="color: #ff0000;">for ipadd in $(seq 1 10)</span>
do
ping -c 1 -w 1 ${network}.${ipadd} &amp;&gt;/dev/null &amp;&amp; result=0 || resul
t=1
if [ "$result" == 0 ]; then
echo "PC ${network}.${ipadd} is UP."
totalup=$((${totalup}+1))
else
echo "PC ${network}.${ipadd} is DOWN."
totaldown=$((${totaldown}+1))
echo -e "WARNNING:The PC (ip:${network}.${ipadd}) have down!!! \n `date` \n Please contact the administrator as soon as possible to repair." | mail -s root <span style="color: #ff0000;"><a href="mailto:youmail@xxx.com"><span style="color: #ff0000;">youmail@xxx.com</span></a></span>
echo -e "WARNNING:The PC (ip:${network}.${ipadd}) have down!!! \n `date` \n Please contact the administrator as soon as possible to repair." &gt;&gt; ping-`date`.log
fi
done
echo "The uping PC has ${totalup}"
echo "The downing PC has ${totaldown}"

需要注意以上标红的地方根据自己需要修改
network="10.1.1" 这里只填写你网段内的前三段。
for ipadd in $(seq 1 10) 这里就是第四段检测的区域,这里指检测10.1.1.1至10.1.1.10这些IP,具体根据自己需求修改。
youmail@xxx.com这里是错误发送到的邮箱地址。

另外需要注意的是,首先文件创建之后需要有777权限,否则无法执行。另外的是,需要检测你的计算机或服务器(LINUX)是否安装了SENDMAIL,如果没有安装,那么邮件是无法发送的。

当然了,如果你的LINUX系统是中文的话,那么以上相关信息是可以写成中文的,哥杯具的只有VPS,没装中文字体,所以就英文的干活了!

做好脚本后,在系统里订制一个自动运行脚本就OK了~

最后修改:2015 年 11 月 07 日
如果觉得我的文章对你有用,请随意赞赏