Shell IP地址监控
admin
2023-01-21 06:23:07
0
#!/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 IP地址监控

邮件告警效果

Shell IP地址监控

Shell IP地址监控

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...