昨天有个人想要我给他写一个可以 查看ShadowsocksR服务端每个端口的链接IP数 的脚本,我今天就写了个给他了,同时感觉这个脚本也可以发出来,又需要的人可以使用。
系统要求
CentOS 6+ / Debian 6+ / Ubuntu 14.04 +
仅限 ShadowsocksR Python版服务端 使用。
脚本版本
Ver: 1.0.6
这个脚本的作用就是,会检测链接ShadowsocksR服务端的每个端口的链接IP数。
脚本有两种模式:一是检测并列出超过IP阈值的端口和链接IP信息;二是检测并列出所有端口和链接IP信息。
目前很多人还是使用着 兼容原版的协议,但是兼容原版意味着 协议参数的限制设备数无效,所以一些人没办法限制,可以用这个脚本进行查看。
这个脚本只是我帮助他人写的脚本,所以拿出来介绍一下(水一篇文章
这个脚本目前只能手动去执行检测,可以去加入定时任务定时检查,但是我不知道该用哪种方式通知你们,一般做代理的服务器都会封掉邮件端口来避免垃圾邮件,不用邮件的话也不知道该如何通知你们有端口超过IP阈值了,有意见的可以在下面留言~
安装步骤
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/ssr_ip_check.sh && chmod +x ssr_ip_check.sh
使用说明
脚本有两种模式:
bash ssr_ip_check.sh c # 检测并列出超过IP阈值的端口和链接IP信息(默认为 3) bash ssr_ip_check.sh a # 检测并列出所有端口和链接IP信息(实际是IP阈值为 1) bash ssr_ip_check.sh c y # IP后面显示IP的归属地 bash ssr_ip_check.sh a y # IP后面显示IP的归属地
输出结果如下:
当前时间:2017-04-20 12:12:05 4 CST 端口: 2333 ,IP总数: 3 ,IP: 1.1.1.1(XX归属地) 2.2.2.2(XX归属地) 3.3.3.3(XX归属地) 端口: 6666 ,IP总数: 5 ,IP: 4.4.4.4(XX归属地) 5.5.5.5(XX归属地) 6.6.6.6(XX归属地) 7.7.7.7(XX归属地) 8.8.8.8(XX归属地)
如果没有任何输出,那么说明没有超过阈值的端口信息
修改阈值
脚本一开头的第12行,有个变量是IP阈值,默认为IP_threshold=3
,如果想要修改阈值,可以打开文件手动修改,也可以用下面这个命令修改(注意把代码最后的6
改成你要的IP阈值)。
以下代码是完整的一行,请一起复制粘贴执行。
sed -i 's/'$(sed -n -e "12p" ssr_ip_check.sh)'/IP_threshold=6/g' ssr_ip_check.sh
其他说明
注意:本脚本中的 显示链接信息中的 获取IP归属地功能使用的是 IPIP.NET 的免费API接口,因为限速所以每秒只能检测一次,同时 IPIP.NET 的免费API接口并不会保证稳定性,可能什么时候就突然暂时失效了,这是本人不可控的,有条件可以自建API接口。
定时检测并记录到日志文件
当你需要定时检测IP数并记录到日志的时候,可以用 crontab来定时。
crontab -e # 打开crontab,按 I键 进入编辑模式,把下面的定时代码加入到最后,然后 按ESC键退出编辑模式并输入 :wq 保存并退出。
* * * * *
对应 分钟 小时 日 月 星期
,下面的代码是 每分钟执行一次脚本并把输出的内容写入日志文件(假设脚本在/root
目录下,不是就自己改)
* * * * * /bin/bash /root/ssr_ip_check.sh >> /root/ssr_check.log
下面的代码是 每10分钟执行一次脚本并把输出的内容写入日志文件(假设脚本在/root
目录下,不是就自己改)
*/10 * * * * /bin/bash /root/ssr_ip_check.sh >> /root/ssr_check.log
同时脚本也更新了一下(v 1.0.2),加入了输出当前时间功能,这样也可以看到是什么时候输出的日志。
如何快捷的查询IP归属地
你可能需要查询一下正在链接某端口的 IP归属地,那么不需要复制出来再到 IP查询网站去查询,在VPS上用命令就可以操作(ipip.net)。
如果你的VPS安装的有 curl,那么可以这样:
curl freeapi.ipip.net/1.1.1.1
如果没有安装 curl,那么可以用 wget:
wget -qO- freeapi.ipip.net/1.1.1.1
提示 netstat: command not found 的错误
这种错误是系统没有安装 netstat ,一般是CentOS7 和 Debian9 及以上的系统版本,需要手动安装。
# CentOS 7 及以上系统: yum install net-tools -y # Debian 9 及以上系统: apt-get install net-tools -y
提示 wget: unknown host “yun.doubibackup.com” 之类的错误
这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS。
echo "nameserver 8.8.8.8" > /etc/resolv.conf echo "nameserver 8.8.4.4" >> /etc/resolv.conf
提示 wget: command not found 的错误
这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。
# CentOS系统: yum install -y wget # Debian/Ubuntu系统: apt-get install -y wget
升级脚本
升级脚本只需要重新下载脚本文件就可以了,会自动覆盖原文件。
更新日志
2017年08月10日,版本 v1.0.6
1.修复 提示时间中 分钟 显示错误的问题。
2017年08月07日,版本 v1.0.5
1.修复 IP归属地功能 CentOS端口IP信息叠加BUG(实际是上个版本解决这个BUG的时候,忘记该改CentOS的了…)。
2017年08月07日,版本 v1.0.4
1.修复 IP归属地功能 只输出第一个端口的IP信息的BUG。
1.优化 检测端口、IP等信息的速度(影响不大)。
2017年08月07日,版本 v1.0.3
1.新增 IP后面输出 IP归属地。
—— 运行脚本第二个参数为 y , 比如 bash ssr_ip_check.sh c y 或 bash ssr_ip_check.sh a y
2.修改 IP输出方式为 竖向列表。
2017年04月20日,版本 v1.0.2
1.新增 输出当前时间(可用于循环记录日志)
2017年03月20日,版本 v1.0.1
1.新增 颜色区分。
2.新增 IP之间用 ” | ” 分割,避免搞混。
2017年03月18日,版本 v1.0.0
1.推出 正式版。
转载请超链接注明:月下博客 » 『原创』一个可以检测ShadowsocksR 每个端口链接IP数的脚本
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!