多功能测速脚本
兼容 speedtest-cli、speedtest-go、librespeed-cli、iperf3,脚本自带丰富的测试项目任君挑选,使用者还能自定义想要的测试项目。
使用方法
bash <(curl -sL bash.icu/speedtest)
或
bash <(curl -sL https://raw.githubusercontent.com/i-abc/Speedtest/main/speedtest.sh)
基本功能
脚本自带丰富的测试项目
- 自定义测速节点
- 大陆三网+教育网 多线程 IPv4
- 大陆三网 单线程 IPv4
- 大陆教育网 IPv6
- IPV4 UDP 可用测试
- 各大洲 128线程 IPV4
- 大陆教育网 IPv4
- 大陆电信 多线程 IPv4
- 大陆电信 单线程 IPv4
- 大陆移动 多线程 IPv4
- 大陆移动 单线程 IPv4
- 大陆联通 多线程 IPv4
- 大陆联通 单线程 IPv4
- 各大洲 单线程 IPV4
- 各大洲 八线程 IPV4
持续更新中……
- 大陆三网+教育网 多线程 IPv4
测试机:Justhost-新加坡
高级功能
自定义自己想要的测试项目,很简单的。
我们会有两张表,节点表 (必需)、节点集合表 (非必需)
节点表 (必需)
节点表分为四个区域,分别是提示语区、测试类型区、节点名区、测试参数区:
- 示例
节点表 模板示例,v2023-09-05 speedtest-cli ,联通 郑州 cli ,-o 5gtest.shangdu.com speedtest-go ,联通 郑州 go ,--custom-url http://5gtest.shangdu.com:8080/speedtest/upload.php --force-http-ping speedtest-go ,联通 郑州 八线程 ,--custom-url http://5gtest.shangdu.com:8080/speedtest/upload.php --force-http-ping -t 8 speedtest-go ,联通 郑州 只测上传 ,--custom-url http://5gtest.shangdu.com:8080/speedtest/upload.php --force-http-ping --no-download librespeed-cli,教育 南京 ,--server-json https://jihulab.com/i-abc/speedtest/-/raw/node/china-education.json --server 1 --no-icmp librespeed-cli,教育 南京 只测上传 ,--server-json https://jihulab.com/i-abc/speedtest/-/raw/node/china-education.json --server 1 --no-icmp --no-download iperf3 ,联通 宿迁 只测上传 ,-c 103.239.244.210 -p 22222 iperf3 ,联通 宿迁 只测下载 ,-c 103.239.244.210 -p 22222 -R iperf3 ,联通 宿迁 八线程 ,-c 103.239.244.210 -p 22222 -P 8 iperf3 ,联通 宿迁 测UDP ,-c 103.239.244.210 -p 22222 -u iperf3 ,联通 宿迁 测双向 ,-c 103.239.244.210 -p 22222 --up-and-down
- 1区:提示语区 (可选)
提示语位于节点表开头,可以在这里写上任何话,比如使用说明、备注、自家广告等,当然也可以不写。
- 3区:节点名区
显而易见,这里就是写对应节点的名字。
由于中英文字符编码很难处理,所以如果想要输出美观还得麻烦大家敲空格对齐,当然不对齐对测试无影响。
提示语区、节点名区会直接反映到输出,它们在输出、节点表之间的关系如下图所示:
- 2区:测试类型区
我们有四种类型,分别是 speedtest-cli、speedtest-go、librespeed-cli、iperf3,选一种即可,每种都有不同的特点,具体说明请往下看。
这部分加空格对齐不是必须的,不加对输出无任何影响,当然像我一样的强迫症可以加空格对齐。
- 4区:测试参数区
我们脚本兼容 speedtest-cli、speedtest-go、librespeed-cli、iperf3,我挑选了部分对测试有用的参数应用到了脚本里,大家可以按需使用。
- speedtest-cli
speedtest-cli
speedtest.net 官方 CLI,功能单一。
参数 | 作用 | 示例 |
---|---|---|
-s value | 通过 id 指定节点 | -s 36646 |
-o value | 通过域名指定节点 | -o 5gtest.shangdu.com |
-s
和 -o
二选一,-o
后面参数为纯域名,不含 http(s)、端口号。
节点 id、域名可在 https://www.speedtest.net/api/ios-config.php 查阅。
例如:<server url="http://5gtest.shangdu.com:8080/speedtest/upload.php" lat="34.3287" lon="109.0337" name="Zhengzhou" sponsor="China Unicom HeNan 5G" id="36646"/>
,则 id 为 36646
,域名为 5gtest.shangdu.com
。
- speedtest-go
speedtest-go
针对 speedtest.net 开发的,功能较多,能实现指定线程、禁用某方向测速,但当服务器与测速节点相距较远时结果不如 speedtest.net 官方 CLI。
参数 | 作用 | 示例 |
---|---|---|
-s value | 通过 id 指定节点 | -s 36646 |
–custom-url value | 通过链接指定节点 | –custom-url http://5gtest.shangdu.com:8080/speedtest/upload.php |
-t value | 设置并发连接数 | -t 8 |
-m | 启用多服务器模式 | -m |
–no-download | 禁用下载测试 | –no-download |
–no-upload | 禁用上传测试 | –no-upload |
–force-http-ping | 使用 HTTP 进行强制 Ping,而不是 ICMP | –force-http-ping |
-s
和 --custom-url
二选一,--custom-url
后面参数为完整链接。
--force-http-ping
推荐加上。
节点 id、链接可在 https://www.speedtest.net/api/ios-config.php 查阅。
例如:<server url="http://5gtest.shangdu.com:8080/speedtest/upload.php" lat="34.3287" lon="109.0337" name="Zhengzhou" sponsor="China Unicom HeNan 5G" id="36646"/>
,则 id 为 36646
,链接为 http://5gtest.shangdu.com:8080/speedtest/upload.php
。
- librespeed-cli
librespeed-cli
参数 | 作用 | 示例 |
---|---|---|
–server-json | 远程 JSON 的服务端列表 | –server-json https://jihulab.com/i-abc/speedtest/-/raw/node/china-education.json |
–local-json | 本地 JSON 的服务端列表 | –local-json /root/librespeed.json |
–server | 通过 JSON 中的 ID 指定服务端 | –server 1 |
-4 | 仅使用 IPv4 (默认 false) | -4 |
-6 | 仅使用 IPv6 (默认 false) | -6 |
–no-download | 禁用下载测试 (默认 false) | –no-download |
–no-upload | 禁用上传测试 (默认 false) | –no-upload |
–no-icmp | 不使用 ICMP Ping。ICMP 在 Linux 下工作不稳定 (默认 false) | –no-icmp |
–duration | 测试的持续时间 (秒) (默认 15) | –duration 20 |
--no-icmp
推荐加上。
现成的、优质的 librespeed 服务端较少,而且需要自己写服务端列表 JSON,JSON 写法参照 官方;如果是个人搭建测速、个人使用,推荐 iperf3.
- iperf3
iperf3
参数 | 作用 | 示例 |
---|---|---|
-c ip/host | 指定服务端 | -c 103.239.244.210 |
-p value | 指定服务端端口 | -p 22222 |
-P value | 设置并发连接数 | -P 8 |
-t value | 测试的持续时间 (秒) (默认 10) | -t 20 |
-O value | 前 N 秒的数据不计入最终结果 | -O 3 |
-R | 反向模式,服务器发送、客户端接收 | -R |
-4 | 仅使用 IPv4 | -4 |
-6 | 仅使用 IPv6 | -6 |
-u | UDP测试 | -u |
–up-and-down | 双向测试 (自创选项) | –up-and-down |
当服务端端口为默认的 5201 时,-p
可不加;-p
除了 -p 22222
指定一个端口,还能 -p 5200-5209
指定一个范围内的端口。
iperf3 默认是客户端发送、服务端接收,也就是测上传;想测下载可加 -R
开启反向模式;但 iperf3 只支持单向,所以脚本里自创了 --up-and-down
选项,加上后可测双向;--up-and-down
与 -R
二选一,且 --up-and-down
在本脚本以外的地方不可用,非官方选项。
现成的、优质的 iperf3 服务端很多,可在 iPerf3 Server List 查阅;自建 iperf3 服务端也简单,用包管理器就行了。
节点集合表 (非必需)
当你有很多节点表时可以组一个节点表合集,如下图所示,当然这不是必需的。
- 示例
1. 节点示例 /root/GitHub/speedtest/node-template-1.txt 2. 示例1 /root/GitHub/speedtest/node-template-01.txt 3. 示例2 /root/GitHub/speedtest/node-template-02.txt
每两行为一组,每组中的第一行以序号加英文点 .
开头,第二行为节点表链接,链接可为远程 http 或本地绝对路径。
节点集合表与输出之间的关系如下图所示:
使用自定义的表
我们现在有了节点表、节点集合表,那么该如何使用呢?
只需选择时输入序号 0
,然后填写链接或本地绝对路径即可;链接为节点表就立即开始测试,链接为节点集合表就还会出现选择节点的提示。