最近公司到几个IDC链路不是很好,写个能发邮件的脚本做监控。脚本分别如下:

     ping_tr.sh 执行ping,traceroute操作

    

#!/bin/bash
#author luoz
#2013-06-25
WOPATH=/root/shell
ping -c 100 $1 >>$WOPATH/logs/temp/temp_$1
tail -n 3 $WOPATH/logs/temp/temp_$1
traceroute $1

     net_monitor.sh (crontab 几分钟执行一次,对ip.log中ip做ping 操作)

    

#!/bin/bash
#author luoz
#2013-06-25
DateTime=`date "+%Y%m%d%H"`
Date=`date "+%Y%m%d"`
WOPATH='/root/shell'
mkdir -p $WOPATH/logs/temp
mkdir -p $WOPATH/logs/${Date}/zw
mkdir -p $WOPATH/logs/${Date}/dfz
while true; do
read iplist || break ;
sh $WOPATH/ping_tr.sh $iplist >> $WOPATH/logs/${Date}/zw/$iplist-${DateTime}.log &
done < $WOPATH/zwip.log
while true; do
read iplist || break ;
sh $WOPATH/ping_tr.sh $iplist >> $WOPATH/logs/${Date}/dfz/$iplist-${DateTime}.log &
done < $WOPATH/dfzip.log

      report_mail.sh(生成数据,并发送邮件,开启sendmail服务)

     

#!/bin/bash
#author luoz
#2013-06-25
time=`date +%Y%m%d`
time1=`date +%Y%m%d%H -d  "10 minutes ago"`
time2=`date +%H:%M -d  "10 minutes ago"`
#time1=`date +%Y%m%d%H`
#time2=`date +%H:%M`
WOPATH='/root/shell'
[ -d $WOPATH/vnet/${time} ] || mkdir -p $WOPATH/vnet/${time}
zw="$WOPATH/zwip.log"
dfz="$WOPATH/dfzip.log"
isp=(zw dfz)
com(){
awk 'BEGIN{print "-------------------------------------"}'
awk 'BEGIN{printf "| %-3s| %-16s | %-8s  |\n","ISP","IP","'$time2'"}'
awk 'BEGIN{print "-------------------------------------"}'
for x in ${isp[@]}
do
for i in `eval cat \\$$x`
do
grep -E \(---\|^rtt\) $WOPATH/logs/${time}/$x/${i}-${time1}.log | awk 'BEGIN{FS="/| "}NR%2==1{a=$2}NR%2==0{printf "| %-3s| %-16s | %-8s  |\n","'$x'",a
,$8}'
done
awk 'BEGIN{print "-------------------------------------"}'
done
}
com > $WOPATH/vnet/${time}/${time1}.log
myip=`ifconfig eth0 |grep 'inet addr'|awk '{print $2}'|awk -F':' '{print $2}'`
echo "#########################################################################" >> $WOPATH/vnet/${time}/${time1}.log
echo "Packet Loss" >> $WOPATH/vnet/${time}/${time1}.log
echo "$time2 o 'clock"  >> $WOPATH/vnet/${time}/${time1}.log
grep 'packet loss' $WOPATH/logs/${time}/*/*${time1}.log |grep -v ' 0% packet loss'|awk -F',' '{print $1 $2 $3}' >> $WOPATH/vnet/${time}/${time1}.log
cat $WOPATH/vnet/${time}/${time1}.log
mail -s "${time1}_$myip  network monitor" luoz@test.com -- -f luoz@test.com < $WOPATH/vnet/${time}/${time1}.log

    crontab 中为:

    #*/15 * * * * /root/shell/net_monitor.sh >>/var/log/luoz.log 2>&1
    #10 */1 * * * /root/shell/report_mail.sh >>/var/log/luoz.log 2>&1

 

     ping测试脚本

     

#!/bin/bash
#author luoz
#2013-06-25
WOPATH=/root/shell
for ip in `eval cat $WOPATH/$1`
do
ping -c 2 $ip  >/dev/null
if [ $? -eq 0  ]; then
echo "$ip is up"
echo "$ip" >>alive.log
else
echo "$ip is down"
fi
done