最近公司到几个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
转载于:https://blog.51cto.com/luozlinux/1238907