5154

Good Luck To You!

CentOS如何安装speedtest-cli并用命令行测试服务器上传下载速度?

在现代服务器管理和网络运维中,对网络连接质量的实时监控与精确测量至关重要,对于广泛使用的 CentOS 系统而言,拥有一款轻量、高效且功能强大的命令行测速工具,是系统管理员和开发者的必备技能。speedtest-cli 正是这样一款工具,它将广受欢迎的 Ookla Speedtest.net 服务带到了终端界面,让用户无需图形浏览器即可进行精准的带宽测试,本文将全面介绍如何在 CentOS 系统上安装、配置及使用 speedtest-cli,并探讨其在实际工作场景中的高级应用。

CentOS如何安装speedtest-cli并用命令行测试服务器上传下载速度?


speedtest-cli 的核心价值

speedtest-cli 是一个用 Python 编写的命令行界面工具,它利用 Speedtest.net 的全球服务器网络来测试互联网连接的性能,其主要价值体现在以下几个方面:

  • 无图形界面依赖:对于服务器环境,尤其是没有安装桌面环境的 CentOS 系统,speedtest-cli 提供了唯一的原生测速方案。
  • 自动化与脚本化:作为命令行工具,它可以轻松地集成到 Shell 脚本、定时任务(如 Cron)或监控系统中,实现网络性能的自动化、周期性监控与数据记录。
  • 资源占用低:相较于复杂的图形化应用,它运行时消耗的系统资源极少,几乎不会对服务器上运行的其他服务产生影响。
  • 数据输出灵活:支持多种输出格式,包括人类可读的文本、CSV(便于数据分析)以及生成可分享的在线结果图片链接,满足不同场景的需求。

在 CentOS 上安装 speedtest-cli

在 CentOS 上安装 speedtest-cli 主要有两种主流方法:通过 Python 包管理器 pip 安装,或直接下载 Python 脚本,两种方法各有优势,用户可根据自身环境选择。

使用 pip 安装(推荐)

这是最标准、最便捷的安装方式,能够方便地进行版本管理和更新,确保系统已安装 pip

对于 CentOS 7/8/9:

CentOS 7 默认使用 Python 2,而 CentOS 8/9 则推荐使用 Python 3,我们强烈建议使用 Python 3 的 pip3

  1. 安装 EPEL 仓库及 pip3

    sudo yum install -y epel-release
    sudo yum install -y python3-pip
  2. 使用 pip3 安装 speedtest-cli

    pip3 install speedtest-cli

    安装完成后,speedtest 命令通常会被添加到系统的 PATH 中,可以直接在终端调用。

直接下载 Python 脚本

这种方法无需 pip,适合于环境受限或希望快速使用单个文件的场景。

  1. 下载脚本: 使用 wgetcurl 命令从 GitHub 仓库下载最新的脚本文件。

    wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
  2. 赋予执行权限

    CentOS如何安装speedtest-cli并用命令行测试服务器上传下载速度?

    chmod +x speedtest-cli
  3. 运行脚本: 由于脚本不在系统 PATH 中,你需要通过指定路径来运行它。

    ./speedtest-cli

    或者,你可以将其移动到 /usr/local/bin 目录下,以便像系统命令一样全局调用。

    sudo mv speedtest-cli /usr/local/bin/speedtest
    speedtest

speedtest-cli 基本用法详解

安装完成后,即可开始使用,以下是一些最常用的命令和参数。

执行基本测速

直接运行命令,speedtest-cli 会自动选择距离最近且延迟最低的服务器进行测试。

speedtest-cli

输出结果通常包含三部分:

  • Ping:客户端与测试服务器之间的往返延迟时间(毫秒)。
  • Download:下载速度(通常以 Mbit/s 为单位)。
  • Upload:上传速度(通常以 Mbit/s 为单位)。

指定测试服务器

有时,你可能需要测试到特定地区或特定 ISP 的连接质量,这时,可以先列出所有可用服务器,然后指定其 ID 进行测试。

  1. 列出所有服务器

    speedtest-cli --list

    这会生成一个很长的列表,按地理位置排序,每个服务器前面都有一个唯一的 ID。

  2. 根据 ID 测试: 假设你想测试 ID 为 12345 的服务器,可以执行:

    speedtest-cli --server 12345

生成分享链接

如果你想将测试结果分享给他人,可以使用 --share 参数,测试完成后,它会生成一个 URL,打开后是一个包含测试结果的图片。

speedtest-cli --share

以 CSV 格式输出

为了便于数据分析和日志记录,可以使用 --csv 参数输出结果,这对于自动化监控脚本来说是非常有用的。

CentOS如何安装speedtest-cli并用命令行测试服务器上传下载速度?

speedtest-cli --csv

配合 --csv-header 可以在第一行输出表头。


高级应用与脚本化

speedtest-cli 的真正威力在于其可脚本化能力,以下是一个简单的表格,汇总了常用的高级参数,并附上一个脚本示例。

参数 描述 示例
--simple 简化输出,只显示核心数值 speedtest-cli --simple
--bytes 以字节/秒(B/s)为单位显示速度,而非比特/秒 speedtest-cli --bytes
--server SERVER_ID 指定测试服务器 ID speedtest-cli --server 5402
--share 生成一个可分享的结果图片链接 speedtest-cli --share
--csv 以 CSV 格式输出结果 speedtest-cli --csv >> speed_log.csv
--source IP 绑定服务器的特定 IP 地址(适用于多网卡服务器) speedtest-cli --source 192.168.1.100

脚本示例:定时记录网络速度

下面的 Bash 脚本可以每小时执行一次网络速度测试,并将结果以 CSV 格式追加到日志文件中,同时记录时间戳。

#!/bin/bash
# 定义日志文件路径
LOG_FILE="/var/log/network_speed.log"
# 检查日志文件是否存在,如果不存在则创建并写入 CSV 表头
if [ ! -f "$LOG_FILE" ]; then
  echo "Timestamp,Ping,Download,Upload" > "$LOG_FILE"
fi
# 获取当前时间戳
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
# 运行 speedtest-cli 并获取 CSV 输出(跳过表头)
RESULT_CSV=$(speedtest-cli --csv --simple)
# 将时间戳和结果追加到日志文件
echo "$TIMESTAMP,$RESULT_CSV" >> "$LOG_FILE"
echo "[$TIMESTAMP] Speed test completed and logged to $LOG_FILE"

你可以将此脚本保存为 /usr/local/bin/log_speed.sh,赋予其执行权限,然后通过 Cron 定时任务来运行它:

# 编辑 crontab
crontab -e
# 添加一行,表示每小时执行一次
0 * * * * /usr/local/bin/log_speed.sh

相关问答 FAQs

Q1: 为什么 speedtest-cli 的测试结果与我用浏览器访问 Speedtest.net 的结果不一致?

A1: 这种差异是正常的,可能由以下几个因素导致:

  • 服务器选择不同speedtest-cli 默认选择“的服务器(基于延迟),而网页版可能默认选择你的 ISP 提供的服务器或你上次选择的服务器,不同服务器的负载和网络路径会直接影响测试结果。
  • 网络拥堵瞬间:互联网流量是动态变化的,两次测试间隔几秒钟,就可能遇到不同的网络拥堵情况,导致速度波动。
  • 多线程与单线程:网页版测速通常使用多线程连接以最大化利用带宽,而 speedtest-cli 的某些版本或默认配置可能使用单线程,你可以通过查看文档或源码了解如何调整线程数,但默认值通常是经过权衡的。
  • 系统资源限制:在服务器上运行时,CPU 或内存资源紧张,也可能间接影响测速结果。

要获得可比较的结果,建议在 speedtest-cli 中使用 --server 参数指定与网页版相同的服务器进行测试。

Q2: 我可以在一个完全没有外网连接的私有内网服务器上使用 speedtest-cli 来测试内网带宽吗?

A2: 不可以。speedtest-cli 的设计初衷是测试你的服务器连接到公共互联网的速度,它必须能够访问 Speedtest.net 的服务器列表和实际的测速服务器,这些都在公网上,如果你需要测试内网中两台服务器之间的带宽,应该使用其他工具,iperf3iperf3 需要在内网的一台服务器上作为服务端运行,在另一台服务器上作为客户端连接,从而精确测量两者之间的 TCP 或 UDP 吞吐量,这是内网性能测试的标准方法。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.