实时监测服务器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

安装步骤

执行下面的代码下载并运行脚本。
  1. wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/gfw_push.sh && chmod +x gfw_push.sh && bash gfw_push.sh
运行脚本后会出现脚本操作菜单,选择并输入 1 就会开始初始化配置。
  1. 请输入该服务器的 [别名]
  2. 用于推送消息时,使你快速分辨服务器。支持中文,但请勿包含一些特殊符号,否则可能导致推送出错。
  3. (默认为空):香港A
  4.  
  5. ========================
  6. 别名 : 香港A
  7. ========================
  8.  
  9. 请输入推送机器人 [API密匙]
  10. Token,通过 @notificationme_bot 机器人获取。
  11. 获取步骤:向机器人发送 /start 后,机器人会告诉一个API URL,例如:https://tgbot.lbyczf.com/sendMessage/abc,其中的 abc 就是API密匙。
  12. (不能为空):abc
  13.  
  14. ========================
  15. 密匙 : abc
  16. ========================
  17.  
  18. [信息] 定时监控功能添加成功 !
  19. [信息] 初始化配置完成,目前已启动定时检测IP被墙状态。

使用说明

进入下载脚本的目录并运行脚本:
  1. ./gfw_push.sh
然后选择你要执行的选项即可。
  1. 监测IP是否被墙脚本 [vX.X.X]
  2. ---- Toyo | doub.io/shell-jc8 ----
  3. 0. 升级脚本
  4. ————————————
  5. 1. 初始化
  6. 2.
  7. ————————————
  8. 3. 手动 检测IP
  9. 4. 暂停 监测IP
  10. 5. 重启 监测IP(或清零阈值)
  11. —— 当暂停或脚本推送三次IP被墙信息后,
  12. 可以用该选项使脚本继续监测IP
  13. ————————————
  14. 6. 设置 配置信息
  15. 7. 查看 配置信息
  16. 8. 查看 日志信息
  17. ————————————
  18.  
  19. 当前状态: 已启动监测
  20.  
  21. 请输入数字 [0-8]:

获取API密匙

首先请联系机器人:@notificationme_bot
获取API密匙:输入 /start 后回车,机器人就会随机生成一个 API 密匙,即下图中划红色横线的文本(cnb552jkzmy7py)。
删除API密匙:如果你的 API 密匙暴露了,可以输入 /end 后回车,机器人就会删除你的API密匙。

下图演示中,我又获取了一个新的 API 密匙(cnbuwjnodyir8),脚本初始化时就填写这个API密匙。
同时我又演示了带服务器别名和不带别名的消息示例。
服务器别名就是你给服务器起个名字,这样推送消息给你时,你不至于想不起来是哪个服务器。
当你获取 API 密匙后,机器人就会把你的用户名和API密匙对应起来添加到数据库中,在收到该API密匙传递的消息后,就会转发给你,即起到转发消息作用。

其他

配置文件和日志文件都位于脚本所在目录。
配置文件:gfw_push.conf
日志文件:gfw_push.log

其他说明

关于日志

虽然脚本并不会自动删除日志文件,但是大家也不需要担心日志越来越大占用空间,我给算一下大家就明白了。
平均10行日志内容对应1KB大小,一天1440行,一个月43200行=4320KB=4.2MB,一年也才50MB
一年才占 50MB 大小,这能影响什么,如果你实在有强迫症,那么可以手动清空:
  1. # 首先进入脚本所在目录(你能运行脚本就能执行下面的代码):
  2. echo "" > gfw_push.log

定时任务自定义

脚本默认每分钟检测一次,如果你不需要这么频繁,可以使用crontab -e命令编辑定时任务,简单介绍下格式:
  1. * * * * * /xxx/xx
  2. # 前面的五个 * 分别对应:分钟、小时、日、月、星期(0和7代表星期日)
  3. # 后面的 /xxx/xx 则对应要执行的命令(绝对路径)
写几个示例:
  1. # 假设你的脚本位于 /root 目录下,那么执行命令就是 /root/gfw_push.sh
  2. # 你们只要关注前面的定时间隔即可。
  3.  
  4. * * * * * /bin/bash /root/gfw_push.sh
  5. # 每分钟执行一次
  6.  
  7. 0 3 * * * /bin/bash /root/gfw_push.sh
  8. # 每天凌晨3点0分执行一次
  9.  
  10. 30 */2 * * * /bin/bash /root/gfw_push.sh
  11. # 每隔两个小时在30分时执行一次
你可以去这个网站计算出执行命令的间隔时间。

转载:逗比根据地 » 『原创』实时监测服务器IP是否被墙并推送消息至 Telegram 一键脚本