news 2026/8/5 11:48:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 服务质量非常有价值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 11:48:02

自己怎么建设手机网站:从零基础到上线的全流程实战指南,小白也能轻松上手

在这个移动互联网几乎渗透到生活每一个角落的时代,如果你还没有一个属于自己的手机网站,或者还停留在用电脑看网页的阶段,那真的就像是在信息高速公路上骑着自行车,不仅慢,还容易被甩在后面。很多老板、创业者,甚至是自由职业者,都在问同一个问题:自己怎么建设手机网站…

作者头像 李华
网站建设 2026/8/5 11:48:00

建设银行门户网站深度解析:从个人金融到企业服务的全面指南

在这个数字化浪潮席卷全球的今天,银行早已不再是那个只有冰冷柜台和排队叫号机的传统金融机构。对于咱们普通老百姓,以及广大中小企业主来说,打开电脑或手机,登录“建设银行门户网站”,往往是我们处理金融事务的第一步,也是最关键的一步。今天,咱们不聊那些晦涩难懂的高…

作者头像 李华
网站建设 2026/8/5 11:47:59

北京外贸网站建设:如何打造真正能获客的国际化数字名片

咱们今天不聊那些虚头巴脑的大道理,也不整那些晦涩难懂的技术术语。作为一个在北京摸爬滚打多年的外贸老兵,我见过太多老板拿着几万块甚至十几万做的网站,最后只能躺在服务器里吃灰。为什么?因为很多所谓的“外贸网站建设”,从一开始就跑偏了。大家总觉得,只要页面做得漂…

作者头像 李华
网站建设 2026/8/5 11:47:52

揭秘网站群建设优点:如何低成本实现品牌统一与高效管理

在这个互联网信息爆炸的时代,很多企业或者机构在搭建自己的网络阵地时,往往面临着这样一个尴尬的局面:单做几个网站吧,维护起来累得半死,数据还散落在各个角落,根本没法形成合力;想搞个大平台吧,又担心投入太大,最后变成面子工程,里子却没捞着多少好处。这时候,很多…

作者头像 李华
网站建设 2026/8/5 11:47:50

建设银行网站登录:2024年最新安全指南与实用技巧,助您轻松搞定网银操作

在这个数字化飞速发展的时代,银行账户管理早已不再是那个需要排长队、填单据、看柜员脸色的繁琐过程了。如今,我们手指轻轻一点,就能完成转账、缴费、理财甚至查询历史账单。然而,技术的便利往往伴随着对安全性的更高要求,尤其是对于像建设银行这样的大型国有商业银行来说…

作者头像 李华
网站建设 2026/8/5 11:47:45

从零开始掌握网页设计与网站建设完全学习手册:新手避坑指南与实战进阶之路

在这个互联网渗透进生活每一个角落的时代,拥有一个属于自己的网站或者掌握网页设计的能力,已经不再仅仅是程序员或设计师的专属技能,而是每一个希望在职场中脱颖而出、或者想要将自己的创意落地为数字产品的现代人的必备素养。很多人一听到“网页设计”和“网站建设”,脑海…

作者头像 李华