shell脚本:ping检测网站连通性,实现钉钉报警

逍遥 浏览:2588 19
等有时间再贴图,先直接上代码[aru_15]

pingcheck.sh

#!/bin/bash
#Blog:http://blog.hacka.cc

for ip in $(cat /app/yunwei/ping/ip_list.txt|sed "/^#/d")    
#ip_list.txt是当前目录下IP表,如果路径不对,自己改
  do
     ping -c 1 $ip &>/dev/null            
#三个ping有一个能通,说明服务器正常
     a=$?
     sleep 2
     ping -c 1 $ip &>/dev/null
     b=$?
     sleep 2
     ping -c 1 $ip &>/dev/null
     c=$?
     sleep 2
     DATE=$(date +%F" "%H:%M)
     if [ $a -ne 0 -a $b -ne 0 -a $c -ne 0 ];then
         echo -e "Date : $DATE\nHost : $ip\nProblem : Ping is failed."
		 function SendMessageToDingding(){
		 	  
        url="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx"

#token 我想你们会获取的吧https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq
        UA="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"

        res=`curl -XPOST -s -L -H "Content-Type:application/json" -H "charset:utf-8" $url -d "
        {
        \"msgtype\": \"text\", 
        \"text\": {
                 \"content\": \"=====pingcheck通知=====\nDate : $DATE\nHost : $ip\nProblem : Ping is failed.\"
                 },
		\"at\": {
                 \"atMobiles\": ["156***5396",
				 "156],
				 \"isAtAll\": false
                 }
    }"`
#填群里的手机号,才能艾特到,为空就是不艾特
#isAtAll是艾特全体的开关,true/false ,你们懂的
        echo $res

}
	  SendMessageToDingding
     fi
done

好吧,还有一件事,别忘记新建ip_list.txt
[wb_笑而不语]

发表评论 取消回复
表情 图片 链接 代码

  1. 墨兰
    墨兰 Lv 1

    在?博客都长草了

  2. bai
    bai'x Lv 1

    ip太多后面加上标题怎么弄

    • 逍遥
      逍遥 Lv 1

      @bai'x直接变量吧,因为钉钉机器人的通知只有这个接口,只有内容,没得标题,所以可以考虑在内容里加标题产量?

      • bai
        bai'x Lv 1

        @逍遥是不是可以在ip列表后面加上服务器名称,在取这个值,断网了可以发消息,恢复了也能发送吧??

        • 逍遥
          逍遥 Lv 1

          @bai'x现在只有ping不通会有报警 恢复了不会有提示的[aru_88]

        • 逍遥
          逍遥 Lv 1

          @bai'x重点是content内的内容

          • bai
            bai'x Lv 1

            @逍遥content 里面如何添加已经获取到的ip后面的名称
            192.168.0.2 服务器

          • 逍遥
            逍遥 Lv 1

            @bai'x脚本里加判断变量吧 如果为$ip=192.168.0.2 则 $ipname = 192.168.0.2【服务器】 输出的时候用$ipname 只能这样

          • bai
            bai'x Lv 1

            @逍遥应搞定了

          • 逍遥
            逍遥 Lv 1

            @bai'x加的判断嘛?

          • bai
            bai'x Lv 1

            @逍遥加得 Title=$(sed -n "/$ip/"p /home/ip.txt | awk '{print $2}')

          • 逍遥
            逍遥 Lv 1

            @bai'x[aru_53]

  3. 聚网志成

    我看了不少网站,博主的网站写的不错,收藏了哈,经常来看,有空我们一起做个友qing链jie呗,我的是:www.jw61.com 深圳网站建设,等着你哦。

  4. 1111
    1111 Lv 1

    {"errmsg":"缺少参数 json","errcode":40035}

    • xiaoyao
      xiaoyao Lv 1

      @1111看看 res内容有没有问题

  5. 1111
    1111 Lv 1

    显示no url specified

  6. xiaoyao
    xiaoyao Lv 1

    我能不能说最近出差忙[aru_15]

  7. 李野
    李野 Lv 1

    又发现一个几个月不更新的 [aru_4]

分享