自动化工具如何定时测网速

联启 网络工具 1

本文目录导读:

自动化工具如何定时测网速-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 方案一:使用 Speedtest CLI + 系统任务计划程序(推荐,跨平台)
  2. 方案二:使用 iPerf3(测内网/局域网速度)
  3. 方案三:使用图形化工具(适合不想写代码的用户)
  4. 如何将测速结果自动汇总成图表?

针对“自动化工具定时测网速”的需求,最常用的方法是用命令行工具(如 speedtest-cli)配合系统定时任务(Windows 的“任务计划程序”或 Linux/Mac 的 crontab)来实现,同时将结果保存为日志供后续分析。

以下是几种具体的实现方案:

使用 Speedtest CLI + 系统任务计划程序(推荐,跨平台)

这是最稳定、且不依赖第三方图形界面的方法。Speedtest CLI 是由 Ookla(Speedtest.net 官方)提供的命令行工具,结果准确。

安装 Speedtest CLI

  • Windows/macOS/Linux:访问 Speedtest CLI 官网 下载对应版本,或使用包管理器安装。
    • macOS:brew install speedtest-cli
    • Linux (Debian/Ubuntu):sudo apt-get install speedtest-cli
    • Linux (CentOS/RHEL):sudo yum install speedtest-cli

编写测速脚本

Windows(批处理脚本 speedtest_log.bat):

@echo off
set LOGFILE=C:\speedtest_logs\speedtest_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
REM 创建日志目录(如果不存在)
if not exist C:\speedtest_logs mkdir C:\speedtest_logs
REM 执行测速并追加到日志文件(使用 -f json-pretty 可以让输出更清晰)
echo === Speedtest Log: %date% %time% === >> "%LOGFILE%"
speedtest --accept-license --accept-gdpr -f json-pretty >> "%LOGFILE%" 2>&1
REM 也可以使用更简化的输出格式: speedtest -s 12345 (-s 后面指定服务器ID)
echo. >> "%LOGFILE%"
echo ================================ >> "%LOGFILE%"
echo 测速完成,日志已保存至 %LOGFILE%

macOS/Linux(Shell 脚本 speedtest_log.sh):

#!/bin/bash
LOGFILE=~/speedtest_logs/speedtest_$(date +%Y%m%d_%H%M%S).log
mkdir -p ~/speedtest_logs
echo "=== Speedtest Log: $(date) ===" >> $LOGFILE
speedtest --accept-license --accept-gdpr -f json-pretty >> $LOGFILE 2>&1
echo "" >> $LOGFILE
echo "测速完成,日志已保存至 $LOGFILE"
  • 关键参数说明
    • --accept-license --accept-gdpr:首次运行时跳过协议确认。
    • -f json-pretty:输出格式化为易读的JSON,包含下载、上传、延迟等详细数据。
    • 如果脚本需要直接调用,记得赋予执行权限:chmod +x speedtest_log.sh

设置定时任务

  • Windows(任务计划程序)

    1. 搜索并打开“任务计划程序”。
    2. 右侧点击“创建基本任务”。
    3. 名称:定时测网速。
    4. 触发器:选择“每天”,设置开始时间(如 08:00),并勾选“每隔 1 小时发生一次,持续一天”(或者按需设置间隔,比如每2小时)。
    5. 操作:启动程序 -> 程序或脚本选择 C:\speedtest_logs\speedtest_log.bat
    6. 完成。
  • macOS/Linux(crontab)

    1. 在终端输入 crontab -e
    2. 添加一行(例如每小时执行一次):
      # 每小时的第0分钟执行测速脚本
      0 * * * * /home/your_user/speedtest_log.sh
      # 或者每30分钟执行一次 (每小时的0分和30分)
      */30 * * * * /home/your_user/speedtest_log.sh

查看日志

脚本运行后,你可以在指定的文件夹(如 C:\speedtest_logs)中看到类似 speedtest_20231027_143000.log 的文件,里面包含完整的测速数据,如:

{
  "type": "result",
  "timestamp": "2023-10-27T14:30:00Z",
  "download": {
    "bandwidth": 12500000,
    "bytes": 25000000,
    "elapsed": 2000,
    "latency": {
      "iqm": 10,
      "low": 5,
      "high": 20,
      "jitter": 2
    }
  },
  "upload": {
    "bandwidth": 2500000,
    "bytes": 5000000,
    "elapsed": 2000
  },
  "packetLoss": 0,
  "isp": "Your ISP",
  "interface": {
    "internalIp": "192.168.1.x",
    "name": "eth0",
    "macAddr": "..."
  },
  "server": {
    "id": 12345,
    "host": "speedtest.example.com",
    "port": 8080,
    "name": "Your City",
    "location": "Your Country"
  },
  "result": {
    "id": "...",
    "url": "..."
  }
}
  • 带宽转换bandwidth 单位是 bit/s(比特每秒),要换算成常见的 Mbps,除以 1,000,000。12500000 12.5 Mbps。

使用 iPerf3(测内网/局域网速度)

如果你主要关心局域网内(比如路由到NAS)的网速,而不是外网,用 iPerf3 更合适。

  1. 在需要测试的一端(通常是一台服务器或电脑)运行:iperf3 -s(作为服务端)。
  2. 在需要测试的另一端(你的电脑)运行:iperf3 -c <服务端IP>
  3. 将上述命令写入脚本,配合 atcron 定时执行。

使用图形化工具(适合不想写代码的用户)

如果你不习惯命令行,可以使用一些现成的图形化工具:

  • NetWorx(Windows):它自带“网速监控”和“流量统计”功能,可以设置定时自动记录网速,并导出为CSV/HTML报告。
  • TrafficMonitor(Windows):开源免费,可以监控网速并记录日志。
  • Home Assistant(智能家居平台):配合 HACS 或集成配置,可以定时运行 speedtest 并在仪表盘显示历史图表。

如何将测速结果自动汇总成图表?

如果不想手动翻看日志,可以用 Python 脚本解析 JSON 日志并绘图:

import json
import os
import pandas as pd
import matplotlib.pyplot as plt
log_dir = "~/speedtest_logs/"
data = []
for filename in os.listdir(os.path.expanduser(log_dir)):
    if filename.endswith(".log"):
        with open(os.path.join(os.path.expanduser(log_dir), filename)) as f:
            try:
                content = f.read()
                # 提取JSON部分(假设每行一个结果,或从===标记之间解析)
                # 这里简化处理,实际需根据你的日志格式调整
                for line in content.split('\n'):
                    if line.startswith('{'):
                        record = json.loads(line)
                        data.append({
                            'time': record['timestamp'],
                            'download_mbps': record['download']['bandwidth'] / 1e6,
                            'upload_mbps': record['upload']['bandwidth'] / 1e6,
                            'latency_ms': record['ping']['latency']  # 注意字段名可能略有不同
                        })
            except:
                pass
df = pd.DataFrame(data)
df['time'] = pd.to_datetime(df['time'])
df = df.sort_values('time')
plt.figure(figsize=(20, 8))
plt.plot(df['time'], df['download_mbps'], label='Download (Mbps)')
plt.plot(df['time'], df['upload_mbps'], label='Upload (Mbps)')
plt.xlabel('Time')
plt.ylabel('Speed (Mbps)')'Network Speed Over Time')
plt.legend()
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
方法 优点 缺点 适用场景
Speedtest CLI + 定时任务 准确、官方数据、跨平台、可定制强 需要写脚本,对新手稍复杂 最推荐,长期监控外网速度
图形化工具(如 NetWorx) 无需代码,界面直观 功能固定,数据导出可能不够灵活 不想折腾代码、快速使用
iPerf3 测量局域网内真实吞吐量 需要两端都运行,配置稍复杂 测试路由器/NAS到电脑的内网速度
路由器自带功能 简单直接,无需额外设备 功能定制性差,数据不可导出 只是偶尔看一眼当前速度

建议选择方案一的“Speedtest CLI + 计划任务”,它最通用、最可靠,而且完全自动化,数据可导出。

如果你需要详细的脚本示例或针对某种特定情况的配置(比如只测上传下载的数值并发送邮件通知),可以告诉我,我可以为你进一步优化。

标签: 一键测速

抱歉,评论功能暂时关闭!