本文继续转载一个测评脚本,用来测评网络质量的,脚本为 bash <(curl -Ls Net.Check.Place)
,与之前的脚本《IP 质量体检脚本 # bash <(curl -sL IP.Check.Place)》属于同一个系列的。
系列脚本:
原贴链接:https://www.nodeseek.com/post-287967-1
因为完善的功能、美观的输出、高度的鲁棒性往往和Shell这种极端古老的语言(甚至不能叫语言,而是一种命令行解释器)互斥,外加我对于脚本自身“清洁”的高度执着,比如(除依赖外)严禁读写硬盘、尽量只使用包管理器、第三方应用只使用具有良好口碑的如speedtest官方cli,这一切都导致编写过程极度痛苦,持续的加班熬夜是日常现象。举个例子,在做三网延迟的部分,因为检测结果不完美、检测时间过长等原因,先后写了ping/hping3/nping/mtr四个方案,每次都是完全写好了,只因为很小的问题,彻底推倒重写,这对于做公益事情来讲是难以想象的。说心里话,要不是出于自身兴趣,以及对开源社区的回馈,即便给我20w也不会去做这么辛苦麻烦的事情。在无数个辛苦爆肝的日夜之后,网络体检脚本和各位见面了,脚本不以其他任何脚本作为竞争目标,只是单纯出于对于社区的回馈,做参考级网络测评脚本,希望各位能够喜欢。
省流简介
- 努力做市面最好的网络质量检测类脚本
- 中英文双语言支持
- 支持IPv4/IPv6双栈查询
- 精美排版,直观显示,多终端单屏优化展示
- 支持json输出便于大数据分析
- BGP信息、本地策略、接入信息、三网TCP大包延迟、三网回程路由、国内测速、国际互连七大模块
- 支持延迟模式、低数据模式、跳过任意章节,多种测试方式可根据需求弹性选择
脚本运行(单次运行时间6-8分钟):
- 交互界面
bash <(curl -Ls Check.Place) -N
- 默认检测
bash <(curl -sL Net.Check.Place)
GitHub项目地址(欢迎Star关注): https://github.com/xykt/NetQuality
网络质量体检脚本 – 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输出便于大数据分析
屏幕截图
IPv4测试结果 | IPv6测试结果 |
---|---|
延迟模式测试结果 | 完整路由模式测试结果 |
---|---|
使用方法
便捷模式:交互界面
bash <(curl -Ls Check.Place) -N
高级模式:参数运行
默认双栈检测:
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
低数据模式:
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
脚本更新
2025/04/21 00:00 修复macOS兼容性问题,提升脚本鲁棒性
2025/04/20 21:00 修复大陆IP无法正常获取脚本资源的问题
2025/03/28 00:50 增加-R完整路由模式,增加低数据模式的国际互连延迟测试,修复bugs
2025/03/13 22:40 增加-n参数,跳过OS检测及安装依赖
2025/03/12 17:00 脚本发布
附录
脚本分享示例
********************************************************************************
网络质量体检报告: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"
}
},
后面省略太长了。。。