CloudflareSpeedTest
CloudflareSpeedTest copied to clipboard
-dd 模式下,输出的结果是所有可用IP的延迟的排序,而不是前10个
功能需求
希望 -dd模式下,能够输出前10延迟低的IP排序。另外,能否提供一个不测延迟只测试速度的的功能。
预期目标
我有上次的10个IP结果,用-dd模式测出最新10个延迟最低的IP, 我用脚本组合这20个IP, 然后软件用-allip模式排序出10个最快速度的IP(希望只测速,不测试延迟)。
~~怎么感觉标题输出的结果是所有可用IP的延迟的排序与描述不符能够输出前10延迟低的IP排序~~
实际上每次测试后的结果都存在本地的result.csv文件中,终端显示的结果可以通过参数-p (显示结果数量)来进行修改
比如想在终端上显示所有可用IP的延迟的排序的,那么可以 -p 9999999设为最大值
希望只测速,不测试延迟
假设是使用TCPing来进行测速,每次TCP请求只有 20*5 = 100次
如果你想减少在延迟测速上的时间,可以修改参数 -t (延迟测速次数) 为 -t 1
这样总的TCP 请求就下降到 20*2 = 40次
更好的方案
我有上次的10个IP结果,用-dd模式测出最新10个延迟最低的IP, 我用脚本组合这20个IP, 然后软件用-allip模式排序出10个最快速度的IP(希望只测速,不测试延迟)。
实际上可以合并 上次结果+总的IP的文件,然后拿去测速 比如假设上次的结果为
# last.txt
1.1.1.1
2.2.2.2
那么可以将两个文件合并后再测速
cat last.txt ip.txt > scan_ip.txt
CloudflareSpeedTest -f ./scan_ip.txt
这样测试集里既包含上次最优结果,也有总IP测试最优结果
如果我的命令是延迟和测速一次完成,result.csv内只有10个IP,但用-dd参数,result.csv文件内结果有几千个IP,当然我也可以用脚本选择前10个出来,并和旧的合并,但总觉得不是很完美
我大致明白了你的需求,下面按照逻辑顺序列出来:
- 对所有/随机 IP 仅进行延迟测试
- 挑选出前10的 IP 地址,与上次挑选的 IP 地址合并成新的20个IP
- 对这20个 IP 进行测速测试再挑选出最好的10个 IP 地址
实际上并不需要这么麻烦,因为主要的两次工作:
- 选出新的延迟最低前10 IP地址
- 对合并的20个 IP 地址进行测速
可以直接一次搞定:
- 将旧前10 IP地址写入到
ip.txt - 对所有/随机 IP 和旧前10 IP 进行延迟和测速测试
- 得出新的前10 IP 地址
测速 IP 的顺序是按照延迟和丢包率排序的,在满足下载速度要求的IP达到一定数量后,退出测速 唯一不足的地方就是测速的 IP 地址不一定包含上次前10 的IP地址 好处就是你可以保证目前得出的结果是自选后最优的
如果一定要包含对旧前10 IP 地址进行测速,稍微写一下脚本比如下面的脚本算作一个样例
#!/usr/bin/env bash
#改名旧的前10
mv new_top_10.txt old_top_10.txt
# 仅进行延迟测试
CloudflareSpeedTest -dd
# 提取出新的前10
cat result.csv | sort -t, -k6nr | head -n 10 | awk -F',' '{print $1}' > new_top_10.txt
# 对20个IP进行测速测试
cat new_top_10.txt old_top_10.txt > test_ip.txt
CloudflareSpeedTest -f test_ip.txt -t 1
# 得出新的前10IP地址
cat result.csv
你的脚本真简洁,谢谢了!