月下博客

『原创』一个可以检测ShadowsocksR 每个端口链接IP数的脚本

本文最后更新于 2018年9月20日 19:50 可能会因为没有更新而失效。如已失效或需要修正,请留言!

昨天有个人想要我给他写一个可以 查看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数的脚本
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!