【原创分享】网络质量体检脚本 bash <(curl -Ls Net.Check.Place)

前言

网络质量体检脚本是服务器检测系列接续IP质量体检脚本GitHub Repo)的第二作。很开心前作在发布的一年来获得了大家的基本认可,获得了3k​:star:关注和日均2k IPs运行量的成绩,这也给了我鼓舞和动力继续努力,回报开源社区。网络体检脚本的创作大约经历了一个月的时间,由于时间繁忙,基本都是在晚上十一点打开电脑,码到凌晨两三点,熬夜有害身体,但是挡不住追求完美的心。无论是功能还是排版,一切都站在用户的角度,追求极致。比如各省三网延迟部分,因为不能容忍这样或那样的小瑕疵,重写了三套代码方案;比如在排版方面,要考虑标准报告必须展示在一屏的单次截图范围内(16:9的屏幕终端大约54行)方便用户截屏保存分享,在记事本上模拟列举了很多种排版方案,在信息量和美观度之间反复权衡,计算延迟的测试总量,推敲分栏的位置,像是三网延迟,为了大陆31个省市自治区结果能节约一行空间,专门把北京放到了标题栏最后,像是接入信息的配色,三网线路的配色,基本上都是测遍了所有的ANSI基础配色可能,反复评判。我认为正是这种站在用户角度,追求极致的精神,让本项目从Repo创立到1k​:star:达成,仅仅用时15天,也希望借此机会,与各位开源爱好者努力共勉,不忘初心,追求极致。在这里,我正式把这款网络测试小工具推荐给大家,希望各位喜欢 :folded_hands:

GitHub项目地址(欢迎Star关注): GitHub - xykt/NetQuality: 网络质量检测脚本 - Network Quality Check Script

Counter License

网络质量体检脚本 - 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.TOOLSBGP.HE.NET数据库
  • 上游及接入信息直观展示
  • 中国大陆地区31个省/市/自治区电信/联通/移动三网回程延迟
  • 基于SPEEDTEST.NET的中国大陆(含大湾区)三网网速测试
  • 全球五大洲网速及延迟测试
  • 延迟模式、低数据模式、跳过任意章节,多种测试方式弹性选择
  • Json输出便于大数据分析

屏幕截图

IPv4测试结果 IPv6测试结果
延迟模式测试结果 完整路由模式测试结果

使用方法

  • 默认双栈检测:
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
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"
      }
    },
后面省略太长了。。。

感谢阅读,希望各位不吝赐教 :folded_hands:

61 个赞

是大佬,占领前排!

11 个赞

前排占位 ,感谢大佬, 膜拜大佬

10 个赞

给大佬献出我的膝盖 :cow_face:

10 个赞

前排支持大佬

10 个赞

感谢分享

10 个赞

mjj你好

7 个赞

感谢佬友,

2 个赞

好全!马上试试

2 个赞

感谢大佬!很实用

1 个赞

谢谢楼主分享

1 个赞

能不能加入路由追踪

正是因为有您这种佬友才会让论坛变的更有价值

1 个赞

大佬牛逼,这次是真的学到了,厉害

1 个赞

安装的东西是不是太多了,icon-theme啥的怎么都带进来了。

通过包管理器安装的依赖有jq curl imagemagick mtr iperf3 stun bc,其余都是这些依赖的依赖。icon-theme应该是imagemagick的依赖

如果不想安装依赖,可以使用-n跳过依赖安装模式(可能部分功能会失效),这个在文中提到了,这种模式下,脚本对于磁盘严格0读写

bash <(curl -Ls Net.Check.Place) -n

这个好,支持!

1 个赞

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。