Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 命令列測速神器 speedtest-cli:安裝、使用、分享結果與自動化腳本

編輯:關於 Linux

無圖形介面的伺服器、容器、嵌入式裝置如何測試網速?speedtest-cli 以 Python 實作 Speedtest.net 協議,無需瀏覽器、Flash、JavaScript,純命令列即可測量上/下行頻寬、延遲、抖動、封包損失,支援指定測試節點、輸出 JSON/CSV、分享圖片連結。本文涵蓋安裝、基礎/進階用法、自動化監控腳本、常見問題。

安裝 speedtest-cli

方法一:Python pip(跨平台、版本最新)

# 系統級安裝
sudo pip3 install speedtest-cli

# 或使用者級 (不需 root)
pip3 install --user speedtest-cli
export PATH="$HOME/.local/bin:$PATH"

方法二:系統套件管理器(版本可能較舊)

發行版指令
Debian / Ubuntusudo apt update && sudo apt install speedtest-cli
RHEL / CentOS / Fedorasudo dnf install speedtest-cli (啟用 EPEL)
Archsudo pacman -S speedtest-cli
Alpineapk add speedtest-cli

方法三:手動下載單一腳本(無 Python 套件管理器環境)

wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
sudo mv speedtest-cli /usr/local/bin/

基礎用法

# 自動選最近節點測試
speedtest-cli

# 輸出範例:
# Retrieving speedtest.net configuration...
# Testing from ISP Name (IP)...
# Retrieving speedtest.net server list...
# Selecting best server based on ping...
# Hosted by Server Name (City, Country) [km]
# Testing download speed........................................
# Download: 945.32 Mbit/s
# Testing upload speed..........................................
# Upload: 512.45 Mbit/s
# Share results: https://www.speedtest.net/result/123456789.png

進階參數與常用組合

參數功能範例
--server ID指定測試節點 ID (先用 --list 查詢)speedtest-cli --server 12345
--list列出所有節點 (含 ID、距離、延遲)speedtest-cli --list | grep Taiwan
--mini URL使用自架 Speedtest Mini 伺服器speedtest-cli --mini https://speedtest.example.com/speedtest.php
--source IP指定來源 IP (多網卡環境)speedtest-cli --source 192.168.1.100
--timeout SEC設定超時秒數 (預設 10s)speedtest-cli --timeout 30
--secure使用 HTTPS 連線 Speedtest.netspeedtest-cli --secure
--no-pre-allocate不預先分配記憶體緩衝 (低記憶體裝置)speedtest-cli --no-pre-allocate
--bytes以 Bytes/s 顯示而非 bits/sspeedtest-cli --bytes
--share產生分享圖片連結speedtest-cli --share
--simple簡潔輸出 (適合腳本解析)speedtest-cli --simple
--csvCSV 格式輸出speedtest-cli --csv
--csv-header輸出 CSV 標題列speedtest-cli --csv-header
--jsonJSON 格式輸出 (含所有細節)speedtest-cli --json

自動化監控腳本範例

每小時記錄網速到 CSV (含時間戳)

#!/bin/bash
# /usr/local/bin/speedtest-log.sh
LOGFILE="/var/log/speedtest.csv"
# 首次執行寫入標題
[[ -f "$LOGFILE" ]] || speedtest-cli --csv-header | sed 's/^/timestamp,/' > "$LOGFILE"
# 記錄
speedtest-cli --csv | sed "s/^/$(date -Iseconds),/" >> "$LOGFILE"
# 加入 crontab 每小時執行
0 * * * * /usr/local/bin/speedtest-log.sh

JSON 完整記錄 + 異常告警 (下行 < 100 Mbps 發送郵件)

#!/bin/bash
THRESHOLD=100000000   # 100 Mbps = 100,000,000 bits/s
RESULT=$(speedtest-cli --json)
DOWNLOAD=$(echo "$RESULT" | jq -r '.download')
if (( $(echo "$DOWNLOAD < $THRESHOLD" | bc -l) )); then
    echo "$RESULT" | jq -r '"下行頻寬異常: \(.download/1000000) Mbps, 節點: \(.server.name), 時間: \(.timestamp)"' | \
    mail -s "網速告警" admin@example.com
fi
# 存檔
echo "$RESULT" | jq -c . >> /var/log/speedtest.jsonl

Docker 環境測速

# 臨時容器測試 (不污染宿主機)
docker run --rm --net=host ghcr.io/sivel/speedtest-cli:latest

# 指定節點
docker run --rm --net=host ghcr.io/sivel/speedtest-cli:latest --server 12345 --json

常見問題與解決

ConfigRetrievalErrorNo servers foundIPv6 環境失敗Python 版本衝突
問題原因對策
測試速度遠低於預期Speedtest.net 節點頻寬限制、單執行緒、TCP 視窗、VPS 共享頻寬多測幾個節點 (--list 指定)、對比 iperf3 內網測試
Speedtest.net API 變更、舊版本不相容升級 pip3 install --upgrade speedtest-cli 或用 Docker 最新映像
網路不通、DNS 解析失敗、防火牆擋 80/443檢查 curl speedtest.net、dig speedtest.net
舊版本不支援 IPv6 節點選擇升級至 2.1.3+,或指定 IPv4 節點 --server
系統 Python 與虛擬環境混用用 python3 -m pip install 或 Docker 隔離

替代工具:iperf3 (內網/點對點精準測試)

# 伺服器端
iperf3 -s

# 客戶端
iperf3 -c SERVER_IP -t 30 -P 4   # 30秒、4並行流
# 輸出真實 TCP 頻寬、重傳、擁塞窗口,不受 Speedtest.net 節點限制

speedtest-cli 以「零依賴圖形介面、標準化輸出、易於自動化」成為 Linux 命令列測速首選。配合 cron、Prometheus、Grafana,即可建立全天候網路品質監控體系,讓頻寬問題無處遁形。

Copyright © Windows教程網 All Rights Reserved