当前位置: 首页 > news >正文

Linux命令-speedtest-cli(命令行互联网测速)

Linux命令-speedtest-cli(命令行互联网测速)

    • 🔰 简介
    • 📖 语法
    • ⚙️ 选项
      • Ookla 官方版常用选项
      • Python 版常用选项
    • 💡 示例
      • 示例 1:基本测速
      • 示例 2:列出并选择指定测速服务器
      • 示例 3:自动化网络监控脚本
      • 示例 4:JSON 和 CSV 输出格式
      • 示例 5:带网卡绑定的高级测速
    • ⚠️ 注意
    • 📚 相关命令
    • 📝 总结

快速参考speedtest-cli命令行互联网测速工具,通过连接全球 Speedtest 服务器测量网络的上传速度、下载速度和延迟(Ping)。它有两个主要版本:Ookla 官方二进制度和 Python 落地版speedtest-cli

speedtest-cli特别适合无图形界面的服务器环境,可在 SSH 会话中快速检测网络带宽,常用于服务器网络性能排查和自动化监控。


🔰 简介

Speedtest 最初由 Ookla 公司通过 Web 和 App 提供网络测速服务。speedtest-cli将其搬到了命令行,让服务器管理员和开发者可以:

  • 在远程 SSH 会话中测速
  • 通过 cron 定时检测网络状态
  • 在脚本中集成带宽监控
  • 选择特定测速服务器排除干扰

两个版本的区别

特性Ookla 官方版 (speedtest)Python 版 (speedtest-cli)
命令名speedtestspeedtest-cli
开发方Ookla 官方社区(Matt Martz@sivel)
语言C/C++ 编译二进制Python 脚本
速度更快较慢(Python 解释)
功能丰富基本
维护活跃维护中
推荐度⭐⭐⭐⭐⭐⭐⭐⭐

安装方式(因发行版和版本选择而异):

# ====== 方式一:Ookla 官方版(推荐)======# Debian/Ubuntu$sudoapt-getinstallspeedtest-cli# 注意:Debian/Ubuntu 的 speedtest-cli 包实际是 Ookla 官方版$whichspeedtest /usr/bin/speedtest# RHEL/CentOS/Fedora(添加 Ookla 仓库)$curl-shttps://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh|sudobash$sudoyuminstallspeedtest# CentOS 7$sudodnfinstallspeedtest# Fedora / CentOS 8+# 通用安装(下载二进制)$sudocurl-Lo/usr/local/bin/speedtest\https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz $sudotar-xzf/tmp/ookla-speedtest-*.tgz-C/usr/local/bin/ $sudochmod+x /usr/local/bin/speedtest# Arch Linux$sudopacman-Sspeedtest-cli# AUR 中的 ookla-speedtest# ====== 方式二:Python 版 ======$ pipinstallspeedtest-cli $whichspeedtest-cli /usr/local/bin/speedtest-cli# 验证安装$ speedtest--versionSpeedtest by Ookla1.2.0.84# 或 Python 版$ speedtest-cli--versionspeedtest-cli2.1.3

📖 语法

# Ookla 官方版speedtest[选项]# Python 版speedtest-cli[选项]

⚙️ 选项

Ookla 官方版常用选项

选项说明
--accept-license首次运行时接受许可协议(非交互必需)
--accept-gdpr接受 GDPR 数据处理条款
-s 服务器ID指定测速服务器 ID
-L列出最近的测速服务器
--servers列出附近所有可用的测速服务器
-f 格式输出格式:human-readable(默认)、jsoncsvtsv
-u 单位速度单位(默认Mbps,支持kbpsMbpsGbps
--progress显示进度条(默认yes,可选no
-p结果显示最多 N 位小数(默认 2)
-I 接口指定网络接口(如eth0
-o 源IP指定源 IP 地址
--no-upload跳过上传测试(仅测下载)
--no-download跳过下载测试(仅测上传)
--secure使用 HTTPS 连接测速服务器

Python 版常用选项

选项说明
--simple简洁输出模式(最常用,仅显示 Ping/Download/Upload)
--list列出所有可用服务器
--server ID指定测速服务器 ID
--share生成包含测速结果的在线分享图片链接
--bytes以字节/秒(B/s)而非比特/秒(bps)显示
--no-upload跳过上传测试
--no-download跳过下载测试
--mini URL使用自建的 mini speedtest 服务器
--csvCSV 格式输出
--jsonJSON 格式输出

💡 示例

示例 1:基本测速

# ====== Ookla 官方版 ======$ speedtest --accept-license --accept-gdpr Speedtest by Ookla Server: China Mobile - Shanghai(id:12345)ISP: China Telecom Idle Latency:5.23ms(jitter:1.12ms, low:4.10ms, high:8.56ms)Download:287.34Mbps(data used:345.2MB)12.34ms(jitter:3.21ms, low:8.12ms, high:18.23ms)Upload:45.67Mbps(data used:56.8MB)15.67ms(jitter:2.45ms, low:10.23ms, high:22.34ms)Packet Loss:0.0% Result URL: https://www.speedtest.net/result/c/abcd1234-5678-90ab-cdef-1234567890ab# ====== Python 版 ======$ speedtest-cli--simplePing:5.234ms Download:287.34Mbit/s Upload:45.67Mbit/s# 预期输出:# Ping 时间、下载速度、上传速度清晰显示

示例 2:列出并选择指定测速服务器

# ====== Ookla 官方版 ======# 列出最近的服务器$ speedtest-LClosest servers: ID Name Location Country12345China Mobile - Shanghai Shanghai CN12346China Telecom - Shanghai Shanghai CN12347China Unicom - Shanghai Shanghai CN12348China Mobile - Beijing Beijing CN12349China Telecom - Beijing Beijing CN# 指定服务器测速$ speedtest-s12345# 强制连接特定服务器,排除自动选择的不确定性# ====== Python 版 ======# 列出所有可用服务器(可能很多!)$ speedtest-cli--list|head-1012345)China Mobile(Shanghai, China)12346)China Telecom(Shanghai, China)12347)China Unicom(Shanghai, China)12348)China Mobile(Beijing, China)12349)China Telecom(Beijing, China)24681)i3D.net(Tokyo, Japan)30456)Ookla(Seoul, South Korea)# 指定服务器 ID 测速$ speedtest-cli--server12345--simplePing:5.123ms Download:289.56Mbit/s Upload:46.78Mbit/s# 预期输出:服务器列表 + 指定服务器的测速结果

示例 3:自动化网络监控脚本

#!/bin/bash# 网络带宽定时监控脚本# 通过 cron 每小时执行一次,记录历史带宽数据LOG_DIR="/var/log/network_monitor"LOG_FILE="${LOG_DIR}/bandwidth_$(date+%Y%m).csv"ERROR_LOG="${LOG_DIR}/speedtest_error.log"mkdir-p"$LOG_DIR"# 首次运行时接受许可协议SPEEDTEST="speedtest --accept-license --accept-gdpr"# 测试当前网络TIMESTAMP=$(date'+%Y-%m-%d %H:%M:%S')echo"=== 网络测速开始:$TIMESTAMP==="# 检查网络连通性if!ping-c1-W38.8.8.8>/dev/null2>&1;thenecho"$TIMESTAMP,ERROR,No network connectivity">>"$ERROR_LOG"echo"网络不通,跳过测速"exit1fi# 执行测速(JSON 格式便于解析)RESULT=$($SPEEDTEST-fjson2>/dev/null)if[-n"$RESULT"];then# 使用 jq 解析 JSON 结果SERVER=$(echo"$RESULT"|jq-r'.server.name // "unknown"')PING=$(echo"$RESULT"|jq-r'.ping.latency // 0')DOWNLOAD=$(echo"$RESULT"|jq-r'.download.bandwidth // 0')UPLOAD=$(echo"$RESULT"|jq-r'.upload.bandwidth // 0')PACKET_LOSS=$(echo"$RESULT"|jq-r'.["packetLoss"] // 0')# 转换为 Mbps(原始值单位是 bytes/sec)DOWNLOAD_MBPS=$(echo"scale=2;$DOWNLOAD* 8 / 1000000"|bc)UPLOAD_MBPS=$(echo"scale=2;$UPLOAD* 8 / 1000000"|bc)# 写入 CSV 日志if[!-f"$LOG_FILE"];thenecho"timestamp,server,ping_ms,download_mbps,upload_mbps,packet_loss">"$LOG_FILE"fiecho"$TIMESTAMP,$SERVER,$PING,$DOWNLOAD_MBPS,$UPLOAD_MBPS,$PACKET_LOSS">>"$LOG_FILE"echo"测速结果: Ping=${PING}ms, Download=${DOWNLOAD_MBPS}Mbps, Upload=${UPLOAD_MBPS}Mbps"# 带宽异常告警(下载速度低于 50Mbps 时)if["$(echo"$DOWNLOAD_MBPS< 50"|bc)"-eq1];thenecho"$TIMESTAMP,BANDWIDTH_LOW,Download=${DOWNLOAD_MBPS}Mbps">>"$ERROR_LOG"# 可在此添加邮件/消息告警fielseecho"$TIMESTAMP,ERROR,Speedtest failed">>"$ERROR_LOG"fiecho"=== 网络测速结束 ==="# cron 配置示例:# 0 * * * * /usr/local/bin/network_speedtest.sh # 每小时整点执行

示例 4:JSON 和 CSV 输出格式

# ====== JSON 格式(结构化数据,适合程序解析)======$ speedtest --accept-license-fjson{"type":"result","timestamp":"2026-06-14T10:00:00Z","ping":{"jitter":1.123,"latency":5.234,"low":4.100,"high":8.560},"download":{"bandwidth":35937500,"bytes":345200128,"elapsed":9607,"latency":{"iqm":12.345,"low":8.120,"high":18.230,"jitter":3.210}},"upload":{"bandwidth":5708750,"bytes":56800256,"elapsed":9945,"latency":{"iqm":15.678,"low":10.230,"high":22.340,"jitter":2.450}},"packetLoss":0,"isp":"China Telecom","interface":{"internalIp":"192.168.1.100","name":"eth0","macAddr":"00:11:22:33:44:55","isVpn":false,"externalIp":"123.45.67.89"},"server":{"id":12345,"host":"speedtest.shanghai.example.com","port":8080,"name":"China Mobile - Shanghai","location":"Shanghai","country":"China","ip":"10.0.0.1"},"result":{"id":"abcd1234-5678-90ab-cdef-1234567890ab","url":"https://www.speedtest.net/result/c/abcd1234-5678-90ab-cdef-1234567890ab","persisted":true}}# ====== CSV 格式(表格数据,适合导入 Excel)======$ speedtest --accept-license-fcsv type,timestamp,ping.jitter,ping.latency,ping.low,ping.high,download.bandwidth,download.bytes,download.elapsed,upload.bandwidth,upload.bytes,upload.elapsed,packetLoss,isp,interface.internalIp,interface.name,interface.macAddr,interface.isVpn,interface.externalIp,server.id,server.host,server.port,server.name,server.location,server.country,server.ip,result.id,result.url,result.persisted result,2026-06-14T10:00:00Z,1.123,5.234,4.100,8.560,35937500,345200128,9607,5708750,56800256,9945,0,China Telecom,192.168.1.100,eth0,00:11:22:33:44:55,false,123.45.67.89,12345,speedtest.shanghai.example.com,8080,China Mobile - Shanghai,Shanghai,China,10.0.0.1,abcd1234-5678-90ab-cdef-1234567890ab,https://www.speedtest.net/result/c/abcd1234-5678-90ab-cdef-1234567890ab,true

示例 5:带网卡绑定的高级测速

# 多网卡服务器指定出口网卡测速$ speedtest-Ieth0# 测试通过 eth0 的网速$ speedtest-Ieth1# 测试通过 eth1 的网速# 指定源 IP 地址$ speedtest-o192.168.1.10# 仅测试下载速度(跳过上传)$ speedtest --no-upload Speedtest by Ookla Server: China Mobile - Shanghai(id:12345)Download:289.56Mbps Upload: SKIPPED# 仅测试上传速度(跳过下载)$ speedtest --no-download Speedtest by Ookla Server: China Mobile - Shanghai(id:12345)Download: SKIPPED Upload:46.78Mbps# 限制速度单位显示$ speedtest-ukbps Speedtest by Ookla Download:294568.96kbps Upload:47896.32kbps# 使用 HTTPS 加密连接$ speedtest--secure# 防止中间设备劫持或干扰测速流量# 预期输出:各场景下对应指标的测试结果

⚠️ 注意

测速注意事项

  1. 测速消耗流量:一次完整测速可能消耗几百 MB 流量,在按流量计费的 VPS 上请谨慎,可使用--no-upload减少消耗。
  2. 时间敏感:网络速度受时段影响大,建议在不同时段多次测试取平均值
  3. 服务器选择:自动选择的服务器不一定是最优的,手动指定最近的服务器可得到更准确的结果。
  4. CPU 影响:低速 CPU 或虚拟化环境可能在高速网络(1Gbps+)下成为瓶颈,测速结果≠网络真实带宽。
  5. 首次使用:Ookla 官方版首次使用需要--accept-license--accept-gdpr,可在~/.config/speedtest/中配置持久化接受。
# 持久化接受许可(避免每次都传参数)$ speedtest --accept-license --accept-gdpr $cat~/.config/ookla/speedtest-cli.json# 许可状态已保存在此文件中

Python 版注意speedtest-cli(Python 版)有时会在某些地区因为网络限制无法正常列出服务器,Ookla 官方版容错性更好。


📚 相关命令

命令说明
ping网络延迟测试(ICMP 协议)
iperf3局域网带宽测试工具
mtr网络路径追踪和丢包率分析
curl -o /dev/null -w通过下载文件测试 HTTP 下载速度
iftop实时网络流量监控
nload网络流量实时查看
bmon带宽监控和统计

📝 总结

speedtest-cli服务器网络排查的必备工具,让测速不再依赖浏览器:

  • 简洁输出--simple或默认模式一行结果,清晰直观
  • 结构化数据:JSON/CSV 输出方便集成到监控系统
  • 服务器可选:手动指定测速节点获得更准确的地区带宽数据
  • 自动化友好--accept-license+ cron 实现无人值守监控
  • 版本选择:优先使用 Ookla 官方版,Python 版作为备选

在服务器上安装speedtest后,建议配合 cron 和脚本实现网络带宽的长期趋势监控,这对排查网络故障、评估 ISP 服务质量非常有价值。

http://www.cnnetsun.cn/news/3848261.html

相关文章:

  • 自己怎么建设手机网站:从零基础到上线的全流程实战指南,小白也能轻松上手
  • 建设银行门户网站深度解析:从个人金融到企业服务的全面指南
  • 北京外贸网站建设:如何打造真正能获客的国际化数字名片
  • 揭秘网站群建设优点:如何低成本实现品牌统一与高效管理
  • 建设银行网站登录:2024年最新安全指南与实用技巧,助您轻松搞定网银操作
  • 从零开始掌握网页设计与网站建设完全学习手册:新手避坑指南与实战进阶之路
  • 淄博网站建设优化:本地企业如何打造高转化率的数字名片
  • 房山区网站建设:如何打造真正适合本地企业的数字化名片
  • 杭州网站建设电话:揭秘专业团队背后的服务逻辑与避坑指南
  • 济宁网站建设 智雅:深耕本地数字化浪潮,用真诚与专业打造企业线上核心竞争力
  • 企业网站建设的意义深度解析:为何它是数字时代企业生存与发展的核心基石
  • 东莞建设网站的公司怎么选才不踩坑?资深从业者掏心窝子的避坑指南与深度解析
  • 烟台网站建设哪家好?揭秘本地优质服务商的五大核心标准与避坑指南
  • 网站建设需求调研怎么做?揭秘企业官网从0到1的避坑指南与实战策略
  • 重庆医院网站建设:如何打造有温度、懂医疗的数字化服务窗口
  • 企业网站建设的核心是流量转化与品牌信任的深度构建而非单纯的技术展示
  • 揭秘上海工程建设信息网站:如何高效获取招投标数据与政策动态,助力企业突围增长
  • 网站建设评价标准:揭秘那些决定企业生死存亡的隐形指标
  • 揭秘营销型网站建设费用:从几千到几万,到底钱花在哪了?
  • 甘肃省住房建设厅网站:政策解读、办事指南与民生服务的权威窗口
  • 残联网站建设:打造无障碍数字桥梁,让信息与服务触手可及的真诚指南
  • 怎样建设企业网站:从零基础到打造高转化落地页的实战指南
  • 建设部注册中心网站:新手避坑指南与深度解析,助你快速搞定证书注册全流程
  • 深度解析福建城乡建设网站如何助力家乡发展与你我生活息息相关
  • 郑州网站建设哪家公司好?揭秘行业真相与避坑指南,助你找到最靠谱的合作伙伴
  • 揭秘网站建设私单背后的真相与避坑指南:如何找到靠谱的开发团队
  • 青岛的网站建设公司哪家好?避开这些坑,教你选出最靠谱的服务商
  • 扬州市城乡建设局网站:了解扬州城市发展与民生保障的权威窗口
  • 2024年企业官网升级指南:为什么选择平易云 网站建设 能帮你避开90%的坑
  • 揭秘行业内幕:寻找最专业微网站建设公司,如何打造高转化率的移动端营销利器