前言
网络质量体检脚本是服务器检测系列接续IP质量体检脚本(GitHub Repo)的第二作。很开心前作在发布的一年来获得了大家的基本认可,获得了3k
关注和日均2k IPs运行量的成绩,这也给了我鼓舞和动力继续努力,回报开源社区。网络体检脚本的创作大约经历了一个月的时间,由于时间繁忙,基本都是在晚上十一点打开电脑,码到凌晨两三点,熬夜有害身体,但是挡不住追求完美的心。无论是功能还是排版,一切都站在用户的角度,追求极致。比如各省三网延迟部分,因为不能容忍这样或那样的小瑕疵,重写了三套代码方案;比如在排版方面,要考虑标准报告必须展示在一屏的单次截图范围内(16:9的屏幕终端大约54行)方便用户截屏保存分享,在记事本上模拟列举了很多种排版方案,在信息量和美观度之间反复权衡,计算延迟的测试总量,推敲分栏的位置,像是三网延迟,为了大陆31个省市自治区结果能节约一行空间,专门把北京放到了标题栏最后,像是接入信息的配色,三网线路的配色,基本上都是测遍了所有的ANSI基础配色可能,反复评判。我认为正是这种站在用户角度,追求极致的精神,让本项目从Repo创立到1k
达成,仅仅用时15天,也希望借此机会,与各位开源爱好者努力共勉,不忘初心,追求极致。在这里,我正式把这款网络测试小工具推荐给大家,希望各位喜欢 ![]()
GitHub项目地址(欢迎Star关注): GitHub - xykt/NetQuality: 网络质量检测脚本 - Network Quality Check Script
网络质量体检脚本 - Network Quality Check Script (EN)
支持OS/Platform:Ubuntu | Debian | Linux Mint | Fedora | Red Hat Enterprise Linux (RHEL) | CentOS | Arch Linux | Manjaro | Alpine Linux | AlmaLinux | Rocky Linux | macOS | Anolis OS | Alibaba Cloud Linux | SUSE Linux | openSUSE | Void Linux
- 中英文双语言支持
- 支持IPv4/IPv6双栈查询
- 精美排版,直观显示,多终端单屏优化展示,便于截图分享
- BGP信息、本地策略、接入信息、三网TCP大包延迟、三网回程路由、国内测速、国际互连七大模块
- 基础数据源自BGP.TOOLS及BGP.HE.NET数据库
- 上游及接入信息直观展示
- 中国大陆地区31个省/市/自治区电信/联通/移动三网回程延迟
- 基于SPEEDTEST.NET的中国大陆(含大湾区)三网网速测试
- 全球五大洲网速及延迟测试
- 延迟模式、低数据模式、跳过任意章节,多种测试方式弹性选择
- Json输出便于大数据分析
屏幕截图
使用方法
- 默认双栈检测:
bash <(curl -Ls Net.Check.Place)
- 只检测IPv4结果:
bash <(curl -Ls Net.Check.Place) -4
- 只检测IPv6结果:
bash <(curl -Ls Net.Check.Place) -6
- 延迟模式:
bash <(curl -Ls Net.Check.Place) -P
- 完整路由模式(TCP大包):
bash <(curl -Ls Net.Check.Place) -R [大陆地区省级行政区名称或中/英文简称]
缺省状态默认检测北京、上海、广东三地
bash <(curl -Ls Net.Check.Place) -R
指定参数可检测任意大陆省级行政区(以下任选其一)
bash <(curl -Ls Net.Check.Place) -R 桂
bash <(curl -Ls Net.Check.Place) -R 广西
bash <(curl -Ls Net.Check.Place) -R 广西壮族自治区
bash <(curl -Ls Net.Check.Place) -R GX
bash <(curl -Ls Net.Check.Place) -R gx
- 低数据模式(仅使用Mb级别流量,适用于流量限制型服务器):
bash <(curl -Ls Net.Check.Place) -L
- 跳过任意章节:
bash <(curl -Ls Net.Check.Place) -S 1234567
- 中英文双语支持:
bash <(curl -Ls Net.Check.Place) -l cn|en
- Json输出(输出示例):
bash <(curl -Ls Net.Check.Place) -j
- 跳过检测系统及安装依赖:
bash <(curl -Ls Net.Check.Place) -n
- 自动安装依赖:
bash <(curl -Ls Net.Check.Place) -y
- 报告展示完整IP地址:
bash <(curl -Ls Net.Check.Place) -f
Stars History:
附录
脚本分享示例
********************************************************************************
网络质量体检报告:45.89.*.*
bash <(curl -sL Net.Check.Place)
https://github.com/xykt/NetQuality
报告时间:2025-03-12 15:22:15 CST 脚本版本:v2025-03-11
********************************************************************************
一、BGP信息(BGP.TOOLS & HE.NET)
注册信息: RIPE, AS3258, xTom Tokyo, Prefix/24
注册/修改日期: 2024-12-13 / NoRecord
地区: [JP]Japan, Eastern Asia, Asia
地址: Dummy address for ORG-XJCL1-RIPE
活跃邻居: Prefix/24 15 / 256
二、本地策略
NAT类型: 开放网络无NAT
TCP拥塞控制算法:bbr TCP接收缓冲区(rmem):4096 212992 16777216
队列调度算法: fq TCP发送缓冲区(wmem):4096 212992 16777216
三、接入信息(*=Tier1 *=非Tier1 *=上游)
互联网交换点接入数:0 上游数量:1 对等互联数量:24
AS174 AS701 AS1299 AS2914 AS3257 AS3320 AS3356 AS3491 AS5511 AS6453 AS6461
Cogent Verizon Arelion NTT GTT DTAG Lumen PCCW Orange TATA Zayo
AS6762 AS6830 AS7018 AS12956 AS17676
Sparkle Liberty AT&T Telxius SoftBank
四、三网TCP大包延迟(依次为电信|联通|移动 ⠂=80ms) 京⣀⣀⣀⣀⣀55 ⣀⣀⣀⣀⣀57 ⣀⣀⣀⣀⣀59
津⣀⣀⣀⣀⣀54 ⣀⣀⣀⣀⣀59 ⣀⣀⣀⣀⣀56 冀⣀⣀⣀⣀⣀59 ⣀⣀⣀⣀⣀51 ⣀⣀⣀⣀⣀63 晋⣀⣀⣀⣀⣀57 ⣀⣀⣀⣀⣀59 ⣀⣀⣀⣀⣀60
蒙⣀⣀⣀⣀⣀60 ⣀⣀⣀⣀⣀56 ⣀⣀⣀⣀⣀65 辽⣀⣀⣀⣀⣀68 ⣀⣀⣀⣀⣀59 ⣀⣀⣀⣀⣀77 吉⣀⣀⣀⣀⣀67 ⣀⣀⣀⣀⣀76 ⣀⣀⣀⣀⣀74
黑⣀⣀⣀⣀⣀75 ⣀⣀⣀⣀⣀71 ⣀⣀⣀⣀⣀73 沪⣀⣀⣀⣀⣀32 ⣀⣀⣀⣀⣀41 ⣀⣀⣀⣀⣀35 苏⣀⣀⣀⣀⣀41 ⣀⣀⣀⣀⣀40 ⣀⣀⣀⣀⣀44
浙⣀⣀⣀⣀⣀40 ⣀⣀⣀⣀⣀35 ⣀⣀⣀⣀⣀37 皖⣀⣀⣀⣀⣀39 ⣀⣀⣀⣀⣀50 ⣀⣀⣀⣀⣀46 闽⣀⣀⣀⣀⣀53 ⣀⣀⣀⣀⣀66 ⣀⣀⣀⣀⣀53
赣⣀⣀⣀⣀⣀52 ⣀⣀⣀⣀⣀39 ⣀⣀⣀⣀⣀52 鲁⣀⣀⣀⣀⣀56 ⣀⣀⣀⣀⣀47 ⣀⣀⣀⣀⣀51 豫⣀⣀⣀⣀⣀55 ⣀⣀⣀⣀⣀58 ⣀⣀⣀⣀⣀61
鄂⣀⣀⣀⣀⣀60 ⣀⣀⣀⣀⣀49 ⣀⣀⣀⣀⣀51 湘⣀⣀⣀⣀⣀64 ⣀⣀⣀⣀⣀49 ⣀⣀⣀⣀⣀54 粤⣀⣀⣀⣀⣀55 ⣀⣀⣀⣀⣀58 ⣀⣀⣀⣀⣀77
桂⣀⣀⣀⣀⣀64 ⣀⣀⣀⣀⣀61 ⣀⣀⣀⣀⣀68 琼⣀⣀⣀⣀⣀62 ⣀⣀⣀⣀⣀65 ⣀⣀⣀⣀⣀76 渝⣀⣀⣀⣀⣀64 ⣀⣀⣀⣀⣀53 ⣀⣀⣀⣀⣀63
川⣀⣀⣀⣀⣀60 ⣀⣀⣀⣀⣀66 ⣀⣀⣀⣀⣀65 贵⣀⣀⣀⣀⣀65 ⣀⣀⣀⣀⣀74 ⣀⣀⣀⣀⣀65 云⣀⣀⣀⣀⣀70 ⣀⣀⣀⣀⣀60 ⣀⣀⣀⣀⣀71
藏⣀⣀⣀⣀⣀60 ⣤⣤⣤⣤⣤89 ⣤⣤⣤⣤⣤91 陕⣀⣀⣀⣀⣀56 ⣀⣀⣀⣀⣀57 ⣀⣀⣀⣀⣀58 甘⣀⣀⣀⣀⣀62 ⣀⣀⣀⣀⣀57 ⣀⣀⣀⣀⣀68
青⣀⣀⣀⣀⣀60 ⣀⣀⣀⣀⣀60 ⣤⣤⣤⣤⣤81 宁⣀⣀⣀⣀⣀69 ⣀⣀⣀⣀⣀61 ⣀⣀⣀⣀⣀70 新⣤⣤⣤⣤⣤97 ⣤⣤⣤⣤⣤88 ⣤⣤⣤⣤⣤95
五、三网回程路由(线路可能随网络负载动态变化)
北京TCP:电信 xTom->CTGGIA || 联通 xTom->9929 || 移动 xTom->CTGGIA
北京UDP:电信 xTom->CTGGIA || 联通 xTom->9929 || 移动 xTom->CTGGIA
上海TCP:电信 xTom->CTGGIA || 联通 xTom->9929 || 移动 xTom->CTGGIA
上海UDP:电信 xTom->CTGGIA || 联通 xTom->9929 || 移动 xTom->CTGGIA
广州TCP:电信 xTom->CTGGIA || 联通 xTom->9929 || 移动 xTom->CTGGIA
广州UDP:电信 xTom->CTGGIA || 联通 xTom->9929 || 移动 xTom->CTGGIA
六、国内测速 发送 延迟 接收 延迟||单位:ms Mbps 发送 延迟 接收 延迟
苏州电信 1035 35 974 103||杭州电信 964 39 985 130
上海联通 328 32 481 48||北京联通 64 727 813 462
成都移动 541 155 998 228||福州移动 508 121 945 142
七、国际互连 延迟 发送 重传 接收 重传||单位:ms Mbps 延迟 发送 重传 接收 重传
香港 ⣀⣀⣀⣀⣀⣀ 53 716 74k 943 14||东京 ⣀⣀⣀⣀⣀⣀ 1 1043 80k 999 16
新加坡 ⣀⣀⣀⣀⣀⣀ 78 706 22k 36 7||悉尼 ⣶⣶⣶⣶⣶⣶182 221 29k 302 0
洛杉矶 ⣤⣤⣤⣤⣤⣤120 575 8k 538 0||纽约 ⣶⣶⣶⣶⣶⣶166 121 0 103 323
法兰克福 ⣿⣿⣿⣿⣿⣿255 78 0 71 0||伦敦 ⣿⣿⣿⣿⣿⣿245 270 0 223 11
阿姆斯特丹⣶⣶⣶⣶⣶⣶239 295 0 225 0||圣保罗 ⣿⣿⣿⣿⣿⣿273 240 0 186 1
================================================================================
今日网络检测量:6;总检测量:6。感谢使用xy系列脚本!
Json输出示例
{
"Head": [
{
"IP": "45.89.*.*",
"Command": "bash <(curl -sL Net.Check.Place)",
"GitHub": "https://github.com/xykt/NetQuality",
"Time": "报告时间:2025-03-12 15:22:15 CST",
"Version": "脚本版本:v2025-03-11"
}
],
"BGP": [
{
"ASN": "3258",
"Organization": "xTom Tokyo",
"Prefix": 24,
"RIR": "RIPE",
"RegDate": "2024-12-13",
"ModDate": "null",
"Country": "Japan",
"IntermediateRegion": "null",
"SubRegion": "Eastern Asia",
"Region": "Asia",
"Address": "Dummy address for ORG-XJCL1-RIPE",
"GeoFeed": "null",
"IPinTotal": 256,
"IPActive": 15,
"NeighborinTotal": null,
"NeighborActive": null,
"IXCount": 0,
"UpstreamsCount": 1,
"PeersCount": 24
}
],
"Local": [
{
"NAT": "0x000001",
"NATDescribe": "开放网络无NAT",
"TCPCongestionControl": "bbr",
"QueueDiscipline": "fq",
"TCPReceiveBuffer": "4096 212992 16777216",
"TCPSendBuffer": "4096 212992 16777216"
}
],
"Connectivity": [
{
"ID": 1,
"ASN": 3258,
"Org": "xTom",
"IsTarget": true,
"IsTier1": false,
"IsUpstream": false
},
{
"ID": 2,
"ASN": 174,
"Org": "Cogent",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 3,
"ASN": 701,
"Org": "Verizon",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 4,
"ASN": 1299,
"Org": "Arelion",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 5,
"ASN": 2914,
"Org": "NTT",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 6,
"ASN": 3257,
"Org": "GTT",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 7,
"ASN": 3320,
"Org": "DTAG",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 8,
"ASN": 3356,
"Org": "Lumen",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 9,
"ASN": 3491,
"Org": "PCCW",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 10,
"ASN": 5511,
"Org": "Orange",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 11,
"ASN": 6453,
"Org": "TATA",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 12,
"ASN": 6461,
"Org": "Zayo",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 13,
"ASN": 6762,
"Org": "Sparkle",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 14,
"ASN": 6830,
"Org": "Liberty",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 15,
"ASN": 7018,
"Org": "AT&T",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 16,
"ASN": 12956,
"Org": "Telxius",
"IsTarget": false,
"IsTier1": true,
"IsUpstream": false
},
{
"ID": 17,
"ASN": 17676,
"Org": "SoftBank",
"IsTarget": false,
"IsTier1": false,
"IsUpstream": true
}
],
"Delay": [
{
"Code": "BJ",
"Name": "京",
"CT": {
"Average": "55",
"1": "55.18",
"2": "54.98",
"3": "55.05",
"4": "55.04",
"5": "55.02",
"6": "55.07",
"7": "55.51",
"8": "54.99",
"9": "54.62",
"10": "55.04"
},
"CU": {
"Average": "57",
"1": "57.90",
"2": "57.87",
"3": "57.89",
"4": "57.92",
"5": "57.91",
"6": "57.90",
"7": "57.87",
"8": "57.89",
"9": "57.92",
"10": "57.84"
},
"CM": {
"Average": "59",
"1": "58.86",
"2": "58.90",
"3": "59.02",
"4": "58.91",
"5": "58.84",
"6": "59.35",
"7": "58.87",
"8": "58.90",
"9": "58.90",
"10": "59.72"
}
},
{
"Code": "TJ",
"Name": "津",
"CT": {
"Average": "54",
"1": "54.19",
"2": "54.11",
"3": "54.26",
"4": "54.13",
"5": "54.22",
"6": "54.21",
"7": "54.24",
"8": "54.17",
"9": "54.16",
"10": "54.66"
},
"CU": {
"Average": "59",
"1": "59.02",
"2": "59.00",
"3": "59.12",
"4": "59.03",
"5": "59.01",
"6": "59.19",
"7": "59.00",
"8": "59.05",
"9": "59.07",
"10": "59.05"
},
"CM": {
"Average": "56",
"1": "56.44",
"2": "56.40",
"3": "56.40",
"4": "56.36",
"5": "56.47",
"6": "56.42",
"7": "56.39",
"8": "56.46",
"9": "56.44",
"10": "56.40"
}
},
后面省略太长了。。。
感谢阅读,希望各位不吝赐教 ![]()





