这个是逗比根据地的备份镜像站(非官方)。牢记域名: [doubibackup.com]。搜索:标签云
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

『原创』实时监测服务器IP是否被墙并推送消息至 Telegram 一键脚本

Shell脚本 Toyo 65评论
广告
本文最后更新于 2018年11月2日 13:06 可能会因为没有更新而失效。如已失效或需要修正,请留言!

很早的时候,我就发现了一个 Telegram 推送消息机器人,不过我平时也只是拿来写脚本监控一些东西通知我,昨天晚上突发奇想,觉得我完全可以做一个实时监测服务器IP是否被墙并推送消息至 Telegram 的脚本呀。仔细构思了下,发现应该有一些人会感兴趣的,所以就写出来喽。


脚本简介

该脚本通过 脚本+推送机器人+Crontab(定时任务程序) 轻量化的实现了实时监测服务器IP是否被墙并推送消息至 Telegram 的功能。

即只需要在服务器上面运行脚本并填写 服务器别名(可选) 和 推送API密匙 后就不用管了,接下来脚本会每分钟检测一次与大陆三大运营商的连通性,如果全部无法连通,脚本就会推送消息至 Telegram 通知你。

最快可在1分钟内知晓IP被墙。安装简单、无需复杂操作。

注意:当脚本连续三次检测都是全部无法连通,就会中止监测并推送消息,避免刷屏。

另外:每次检测时如果无法连通,则会再检测一次。

注意:脚本提示你,并不一定是IP被墙,可能服务器与大陆连接出现故障也会导致(虽然三大运营商全崩概率低)。

机器人开源项目地址:https://github.com/Fndroid/tg_push_bot


系统要求

CentOS 6+ / Debian 6+ / Ubuntu 14.04 +


脚本版本

Ver: 1.0.4

安装步骤

执行下面的代码下载并运行脚本。

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/gfw_push.sh && chmod +x gfw_push.sh && bash gfw_push.sh

运行脚本后会出现脚本操作菜单,选择并输入 1 就会开始初始化配置。

点击展开 查看更多

使用说明

点击展开 查看更多


获取API密匙

点击展开 查看更多


其他

配置文件和日志文件都位于脚本所在目录。

配置文件:gfw_push.conf

日志文件:gfw_push.log

其他说明

关于日志

点击展开 查看更多


定时任务自定义

点击展开 查看更多


提示wget: unknown host “raw.githubusercontent.com” 之类的错误

这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS(以下两行一起复制 一起执行)。

点击展开 查看更多


提示 wget: command not found 的错误

这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。

点击展开 查看更多


升级脚本

升级脚本只需要重新下载脚本文件就可以了,会自动覆盖原文件。

或者运行脚本后输入 0 并回车。

更新日志

2018年11月02日,版本 v1.0.4

1. 新增 强制IPv4 模拟访问(毕竟目前只墙 IPv4)。

2. 更换 联通域名(www.10010.cn 域名毛病太多了,另找了个看起来没什么报错的联通域名代替)。

2018年10月29日,版本 v1.0.3

1. 新增 日志DEBUG输出内容(更详细,用于DEBUG)。

2. 优化 大幅降低误报几率。

—— 旧脚本是每次疑似被墙时,就会推送一次消息,连续累计三次就会中止。

—— 新脚本改为了连续累计三次后才推送消息,避免大量误报出现(经过研究发现每次误报都是服务器偶尔无法连接所有URL,但是几乎没有连续误报的)。

—— 因为推送方式改变了,所以不建议将监测时间间隔改的过长,这样的话提醒就不够及时了。

2018年10月25日,版本 v1.0.2

1. 新增 模拟访问时随机UA。

2018年10月25日,版本 v1.0.1

1. 修复 部分系统添加 Crontab 定时任务失败的问题。

2018年10月25日,版本 v1.0.0

1. 推出 正式版。


基于该机器人,应该还有很多玩法,想到什么好玩的欢迎告诉我~

转载请超链接注明:逗比根据地 » 『原创』实时监测服务器IP是否被墙并推送消息至 Telegram 一键脚本
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (176)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(65)个小伙伴在吐槽
  1. 麻烦老哥看下,这是怎么回事呢?
    
    gfw_push.sh: line 105: /etc/init.d/crond: No such file or directory
    gfw_push.sh: line 183: /bin/crontab: Permission denied
    [错误] 定时监控功能添加失败,请检查 !
    You have new mail in /var/spool/mail/root
    [[email protected] ~]# uname -a
    Linux 5KdG6R 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    [[email protected] ~]#
    
    初冬2018-11-09 16:54 回复
  2. 想问一下,此脚本中被墙的判断是 ip 被封还是tcp回程阻断?
    bao2018-11-07 15:02 回复
    • 模拟访问三大运营商官网,如果能访问肯定没有被墙,如果三个同时都不能访问(不能访问时会再检测一次,然后间隔三轮合计连续6次检测不通过,才会推送消息至TG通知你疑似被墙)。
      不过脚本默认是 1分钟检测一次,所以如果遇到服务器线路临时故障,也可能误报,可以将间隔时间改成 5分钟 10分钟,这样如果还是连续三次间隔都连不通,那就更可能是被墙了(或者长期线路故障)。
      Toyo2018-11-07 15:08 回复
  3. 可以加工下,改用Server酱微信推送,比tg方便多了
    cocang2018-11-04 16:10 回复
    • 抱歉,我不使用微信。
      Toyo2018-11-04 17:20 回复
    • 怎么做微信?
      mike2018-11-07 10:20 回复
  4. 话说这个会自动删除日志吗? 怕日志会越来越大
    wos2018-11-02 02:40 回复
    • 不会自动删除,但是经过计算,平均10行日志=1KB大小,一天1440行,一个月43200行,相当一一个月 4320KB,也就是 4.2MB。一年也才50MB日志。
      Toyo2018-11-02 12:59 回复
  5. 是不是应该改为强制IPv4访问?现在官网都已经接入IPv6,有些IPv4被墙的仍然可以通过IPv6连接,造成没有被墙的现象,像这样:[email protected]:/tmp# wget --spider -t2 -T5 www.189.cn
    Spider mode enabled. Check if remote file exists.
    --2018-11-02 00:17:57--  http://www.189.cn/
    Resolving www.189.cn (www.189.cn)... 2408:871a:1101::1000:10, 2408:871a:6010::11, 2408:871a:8810:100::11, ...
    Connecting to www.189.cn (www.189.cn)|2408:871a:1101::1000:10|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 14398 (14K) [text/html]
    Remote file exists and could contain further links,
    but recursion is disabled -- not retrieving.
    
    LamH2018-11-02 00:21 回复
    • 我也尝试过强制 ipv4 访问,但是发现加上 -4 参数的话,可能会出现无法连接的情况,但是 加不加参数都是 ipv4 访问,很迷。。。
      # 你试试下面这两个代码,我加上 -4 ,那么就无法访问了,不加就正常。。
      # 电信和移动官网没事,很迷。联通官网特别垃圾,各种抽风,各种毛病都是模拟访问联通官网出现的,而模拟访问电信和移动基本上没问题。。。
      wget --spider -nv -t2 -T5 -4 www.10010.cn
      wget --spider -nv -t2 -T5 www.10010.cn
      
      Toyo2018-11-02 01:28 回复
  6. 这机器人加到群里是不是没用的?
    在烀2018-10-31 00:37 回复
    • 没用,这个机器人只会私聊。
      Toyo2018-10-31 12:55 回复
  7. 如何模拟被墙,测试下效果呢...
    推推2018-10-29 12:31 回复
    • /etc/hosts 文件中把三大运营商官网域名指向错误的IP。
      Toyo2018-10-29 14:18 回复
  8. 大神,这个定时任务自定义是怎么设置的呢,我复制了那个命令,然后输入1,之后就不能改了
    19L2018-10-28 18:18 回复
    • 根据你的描述,我并不清楚你是怎么操作的。。
      Toyo2018-10-28 22:04 回复
    • 第一次使用crontab可能提示123选择nano编辑器什么的,你选择nano那个好了
      geralt2018-11-05 14:39 回复
  9. 大神,你说的这个假设我的脚本在什么目录里,我直接懵逼了 我怎么去知道它在什么目录呢:mrgreen:
    19L2018-10-28 17:43 回复
    • 脚本在哪里,他们就在哪里。
      Toyo2018-10-28 17:54 回复
  10. 什么是脚本目录呢,完全看不懂啊 :mrgreen:
    19L2018-10-28 17:41 回复
    • 就是脚本所在文件夹路径。
      当你在当前文件夹下执行 ./gfw_push.sh 能看到脚本内容,那么说明脚本就在你当前位于的文件夹中。
      这时候输入命令:pwd 就能看到当前文件夹的绝对路径了。
      Toyo2018-10-28 17:53 回复
      • 当前文件夹是xshell里打开的页面吗,我是真的不懂,纯小白,希望大神解惑
        19L2018-10-28 17:59 回复
  11. 有可以透過email通知的嗎?
    SteveYi2018-10-26 23:31 回复
    • 不能。本脚本依靠的是 TG推送消息机器人 来推送消息的。
      Toyo2018-10-27 11:21 回复
  12. 登录3个运营商的官网靠这个来判断被墙是不是有点玄学 :lol: :lol:
    LLL2018-10-26 10:27 回复
    • 如果服务器IP被墙,那么服务器就无法访问任何国内服务器或者说网站。
      之所以用三大运营商的官网,主要是考虑到误报率的问题,如果只用一个随意的国内网站,那么如果某条路线故障什么的,可能就误报了。
      三大运营商官网走的线路大都不一样,这样避免了例如联通与你的服务器链接故障或者严重丢包,那么电信和移动是正常的,不会误报。
      如果你的服务器三大运营商官网全部无法联通,那么基本上就是被墙了,剩下的可能性就是服务器网络出问题了。
      Toyo2018-10-26 11:15 回复
      • 问题是三大运营商的官网在境外有没有镜像站点或者CDN呢?
        lalala2018-10-26 23:10 回复
        • 木有,我测试都是得到的国内IP。
          Toyo2018-10-26 23:11 回复
  13. 如果ip被墙,那么telegram还能收到推送?
    黄皮子2018-10-26 09:26 回复
    • 当然那,否则这个脚本还有什么意义?
      Toyo2018-10-26 11:11 回复
      • 哈哈,他的意思是那条线路被墙了tg就用不起了。单点故障,还是多搞几条线吧
        妮妮2018-10-26 15:25 回复
        • IP被墙又不影响推送到TG,除非是服务器线路出故障,或者被DD导致置空路由或线路拥塞(严重丢包),这种可能服务器都无法与外界稳定联系了。。
          Toyo2018-10-26 16:15 回复
          • 因为tg也是连接的这台监控服务器,那么如果服务器被墙,tg自然收不到消息咯。 :sad:
            推推2018-10-29 12:30 回复
            • 你说的是TG在使用这个服务器上面搭建的代理,如果服务器被墙,那么也登不上TG了。
              的确是这样,不过该脚本主要针对服务器多的人,如果只有一两个做代理的服务器,那么你自己很快就能发现不能用并检查是否被墙了。br /> 但是如果你有五六个,不可能天天挨个用一遍,可能过了几天才发现某个服务器被墙了。
              Toyo2018-10-29 14:20 回复
            • toyo太耐心了,换做我就骂死你了
              黑猫2018-10-29 20:41 回复
  14. 大佬,能不能检测域名是否被墙?
    DAC2018-10-26 01:44 回复
    • 能啊,当初我的逗比云频繁被墙,我就写了个脚本放到海外服务器上定时监测域名是否被污染,依靠这个机器人及时推送。
      虽然后来被墙的太频繁了,就懒得换逗比云域名了。
      Toyo2018-10-26 11:17 回复
  15. "/root/crontab.bak":0: bad minute errors in crontab file, can't install. 咋回事 用的debian7
    dey】、2018-10-25 20:39 回复
    • 请更新最新脚本。
      Toyo2018-10-25 20:56 回复
  16. 提示错误:定时监控功能添加失败,请检查!
    gary2018-10-25 20:30 回复
    • 请更新最新脚本。
      Toyo2018-10-25 20:56 回复
  17. 第一个服务器正常,第二个提示:
    [ ok ] Restarting cron (via systemctl): cron.service.
    "/root/crontab.bak":0: bad minute
    errors in crontab file, can't install.
    [错误] 定时监控功能添加失败,请检查 !
    
    黑尾白猫2018-10-25 20:26 回复
    • 脚本添加定时任务的步骤是:
      导出当前账户的定时任务内容到文件(crontab.bak),然后追加要添加的定时任务到该文件尾部,然后导入该文件到crontab中。
      你这种错误就是 crontab 文件里格式出问题了,导致无法导入。
      crontab -l
      # 贴出当前 Crontab 配置内容看看
      
      Toyo2018-10-25 20:30 回复
      • 提示:no crontab for root
        黑尾白猫2018-10-25 20:36 回复
        • 请更新最新脚本。
          Toyo2018-10-25 20:56 回复
  18. 不错哦
    GUOHOST2018-10-25 20:17 回复
  19. 定时测试三大运营商,会不会造成一个GFW的检测特征?有点担心
    扬帆大海2018-10-25 19:40 回复
    • 我记得另外几个版本的 ServerStatus ,添加了检测是否被墙的功能,其原理我的脚本差不多,都是测试服务器与三大运营商的连通性。
      要测试一个服务器有没有被墙,要么就是服务器定期访问国内网站,要么就是国内服务器定期访问该海外服务器,别无他法。
      Toyo2018-10-25 20:32 回复
  20. 请问这个工具是用什么方式怎么检测的? 能否检测tcp阻断?关闭ping命令还能否使用?
    conky2018-10-25 19:17 回复
    • 模拟访问三大运营商官网。
      Toyo2018-10-25 20:33 回复
  21. 大佬定时任务失败 图片我发群里并@你了
    temp2018-10-25 19:12 回复
  22. 你好,我在输入 Telegram bot api 以后出现以下错误,cron也正常安装了,系统是debian9,机器是virmach的kvm机器,您能帮忙看一下吗。 [ ok ] Restarting cron (via systemctl): cron.servic."/root/crontab.bak":0: bad minute errors in crontab file, can't install. [错误] 定时监控功能添加失败,请检查 !
    Comosence_Maha2018-10-25 18:57 回复
  23. 404 了
    v2018-10-25 18:39 回复
    • 脚本链接正常。
      Toyo2018-10-25 18:42 回复
      • 哦 好了 把 && 后面一起复制进去了
        v2018-10-25 20:05 回复
  24. 这个机器人都能接收什么样的信息,你都写出来吧
    Jaytao2018-10-25 18:27 回复
    • 文字、URL链接、图片都能通过API推送到 Telegram。
      Toyo2018-10-25 18:41 回复
  25. 对于nat机,在此机器人中是否可以实现检测IP变动并推送通知的功能?
    cirno2018-10-25 18:20 回复
    • 我没有动态外网IP的NAT,不过理论是可以实现的。
      Toyo2018-10-25 18:21 回复
      • 👍監測ip變動這個腳本值得寫
        KenGor2018-10-29 13:19 回复
  26. 这跟我李老几没有关系。但是我要来第一个评论,我李老几的这条评论就是:很吊。
    老几2018-10-25 18:03 回复