Shell IP地址监控
2019-10-19 21:52
1621 查看
#!/bin/bash #ip.txt存放IP地址 QQ450433231 #ip2.txt存放项目名称 IP地址 等信息 用于格式化输出,事先文本定义好IP位置,有利于快速排障 #本次更新增加恢复告警 故障时间 . /root/weixin.sh #调用微信机器人发送告警 https://blog.51cto.com/junhai/2424374 . /root/downiptime.sh #根据日志计算故障时间 #定义时间 cur_time(){ date "+%Y/%m/%d %H:%M:%S" } #定义输出的告警信息 根据IP查找ip2.txt文件输出告警信息 systemname(){ name=`cat ip2jk.txt|grep $ip|wc -l` if [ $name -eq 1 ];then cat ip2jk.txt|grep $ip else echo "$ip" fi } # 判断文件是否存在 [ ! -f /root/ipjk.txt ] && echo "ipjk.txt文件不存在" && exit 1 [ ! -f /root/ipadd.txt ] && touch ipadd.txt #去除文件空格 sed -i '/^$/d' /root/ipjk.txt while read ip do [ -z $ip ] && echo "ipjk.txt存在空格 检查文件格式" && exit 1 for ((i=1;i<6;i++)) do ping -W 2 -c 1 $ip &>/dev/null #判断规则 if [ $? = 0 ];then echo "$(cur_time) ping $ip Successful" >/dev/null #>> /root/connect.log break elif [ $i = 5 ];then info=`echo -e "$(cur_time)\n$ip 未回应PING报文,请检查!\n$(systemname)"` wx_ip #发送企业微信告警 echo -e "$(cur_time) \n$ip未回应PING报文,请检查!\n$(systemname)"|mail -s "【紧急告警】IP未回应PING报文" 450433231@qq.com #发送邮件告警 修改/etc/mail.rc就可以调用第三方邮箱 echo "$(cur_time) 第$i次检查$ip未回应PING报文" >> /root/connectfail.log #写入日志 echo "$ip" >> ipadd.txt #不可达IP移除监控列表 sed -i "s|$ip||" ipjk.txt sed -i "/^$/d" ipjk.txt else echo "$(cur_time) 第$i次检查$ip未回应PING报文" >> /root/connectfail.log sleep 2 fi done done < /root/ipjk.txt sed -i "/^$/d" ipadd.txt ###########################当IP恢复是发送恢复告警 while read ip do [ -z $ip ] && echo "ipadd.txt存在空格 检查文件格式" && exit 1 ping -W 2 -c 1 $ip &>/dev/null if [ $? = 0 ];then echo -e "$(cur_time) $ip 已恢复" >> /root/connectfail.log u=$(grep -w "$ip" ipjk.txt|wc -l) if [ $u -eq 1 ];then echo "$(cur_time) $ip已存在" >> /root/connectfail.log else echo "$ip" >> ipjk.txt fi sed -i "s|$ip||" ipadd.txt sed -i "/^$/d" ipadd.txt info=`echo -e "$(cur_time)\n$ip 已恢复\n$(systemname)\n\n$(fail_time)"` wx_ip echo -e "$(cur_time)\n$ip 已恢复\n$(systemname)\n\n$(fail_time)"|mail -s "【IP已恢复】" 450433231@qq.com else echo "$(cur_time) 第$i次检查$ip未回应PING报文" >> /dev/null fi done < /root/ipadd.txt
#!/bin/bash #分析日志计算时间 fail_time(){ starttime=`tail -n 500 connectfail.log |grep "$ip"|grep "第1次"|tail -n 1|awk '{print $1, $2}'` endtime=`tail -n 500 connectfail.log |grep "$ip"|grep "已恢复"|tail -n 1|awk '{print $1, $2}'` startm=$(date --date="$starttime" +%M); endm=$(date --date="$endtime" +%M); starth=$(date --date="$starttime" +%H); endh=$(date --date="$endtime" +%H); startd=$(date --date="$starttime" +%d); endd=$(date --date="$endtime" +%d); echo "本次故障开始时间 $starttime" echo "本次故障结束时间 $endtime" day=$(($((10#$endd)) - $((10#$startd)))) hour=$(($((10#$endh)) - $((10#$starth)))) minute=$(($((10#$endm)) - $((10#$startm)))) total=$(($(($day * 24 * 60)) + $(($hour * 60 )) + $minute)) echo "本次故障持续时间: $((total / 60)) h $(($total % 60)) m" }
企业微信告警效果
邮件告警效果
相关文章推荐
- 使用 shell 脚本对 Linux 系统和进程资源进行监控
- Linux系统的负载与CPU、内存、硬盘、用户数监控的shell脚本
- 使用shell脚本进行服务器系统监控——系统负载监控(1)
- shell 监控网站是否异常的脚本
- shell监控主机
- 定时 监控 shell 服务宕机自动重启,并发送短信通知
- 通过shell脚本监控tomcat运行情况
- linxu中shell脚本监控mysql主从并调用webservice接口发送短信(粘贴即可使用,亲测)
- shell图形化监控网络流量 网络流量的监控工具有很多,如:Mrtg、Cacti、Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求。除了网络流量监控工具以外,还
- zabbix中通过shell脚本进行微信监控告警
- 监控网站是否可以正常打开的Shell脚本分享
- 【SHELL】监控系统信息CPU,磁盘,内存
- 用shell指令结合获得ip地址
- shell监控 利用外部smtp发送至189邮箱
- linux 性能测试监控shell脚本
- Redhat linux 系统的负载与CPU、内存、硬盘、用户数监控shell脚本
- shell 监控一个程序或者命令执行时间
- Linux基础之-利用shell脚本实现自动监控系统服务
- 使用shell脚本对Linux系统和进程资源进行监控
- 使用 shell 脚本对 Linux 系统和进程资源进行监控