📶 Tools to enhance the speedtest-cli network tools
Clone or download
Permalink
Failed to load latest commit information.
bin Preparing next release Mar 26, 2017
NEWS Preparing next release Mar 26, 2017
README.md Preparing next release Mar 26, 2017

README.md

speedtest-cli-extras

The speedtest-cli-extras repository contains tools that enhance the speedtest-cli command-line interface to speedtest.net for benchmarking an internet connection.

Requirements

  • The speedtest-csv tool requires:
    • a Bash shell or be called via bash speedtest-csv.
    • speedtest-cli which in turn requires Python.
    • that speedtest-cli is on the PATH or in the same directory as speedtest-csv.

Windows users: The MinGW project's MSYS package is an straightforward way to get Bash on Windows. Note, there is a speedtest-csv.bat Windows Batch wrapper script that calls the Bash script for you. In other words, if you call speedtest-csv at the Windows command prompt, it will work just as if you called it from Bash. Regardless, you do need Bash also on Windows.

speedtest-csv

The speedtest-csv tool calls speedtest-cli, captures its multi-line output, reformats it, adds time stamps, and outputs the benchmark statistics on a single well formatted line, e.g.

$ speedtest-csv --header
start	stop	from	from_ip	server	server_dist (km)	server_ping (ms)	download (Mbit/s)	upload (Mbit/s)	share_url
$ speedtest-csv
2016-04-04 16:35:01	2016-04-04 16:35:51	Comcast Cable	24.130.241.190	Fastmetrics Inc. (San Francisco, CA)	20.46	18.168	4.88	1.34	http://www.speedtest.net/result/5224137223.png

Collecting statistics over time

By running the above on a regular basis (e.g. once an hour) and appending the output to a TAB-delimited file one can gather statistics over time. To add meaningful column names to the top of this file, start off by adding a header:

$ speedtest-csv --header > speedtest_stats.tsv
# At 00:00 UTC
$ speedtest-csv >> speedtest_stats.tsv
# At 01:00 UTC
$ speedtest-csv >> speedtest_stats.tsv
# ...

$ less speedtest_stats.tsv
start	stop	from	from_ip	server	server_dist	server_ping	download	upload	share_url
2016-04-04 08:00:01	2016-04-04 08:01:01	Comcast Cable	24.130.241.190	Fastmetrics Inc. (San Francisco, CA)	20.46	18.168	4.88	1.34	http://www.speedtest.net/result/5224137223.png
2016-04-04 09:00:02	2016-04-04 09:00:42	Comcast Cable	24.130.241.190	Monkey Brains (San Francisco, CA)	21.36	16.723	3.40	0.21	http://www.speedtest.net/result/5224152283.png
[...]

If you're on Linux or macOS, you can use Cron jobs to automate the above.

Usage

$ speedtest-csv --help
speedtest-csv 2.0.1

Usage:
 speedtest-csv [options]

Options:
 --header          Display field names (only)

 --header-units    Units (ms, Mbit/s and km) are in header (default)
 --no-header-units Units are in the values
 --standardize     Standardize units and number formats (default)
 --no-standardize  Disable --standardize
 --share           Generate and provide a URL to the speedtest.net
                   share results image (default)
 --no-share        Disable --share

 --quote <str>     Quote fields using <str> (default: none)
 --sep <str>       Separate fields using <str> (default '\t')

 --help            This help
 --version         Display version

 --debug           Output extra debug information
 --last            Use most recent stats, if available
                   (avoids calling `speedtest-cli`)

Any other options are passed to speedtest-cli as is.

Example:
 speedtest-csv --header
 speedtest-csv

 # Defaults in speedtest-csv (<= 1.3.0):
 speedtest-csv --sep ';' --no-standardize --no-header-units

Installed dependencies:
 speedtest-cli 1.0.1 (https://github.com/sivel/speedtest-cli)
 python 2.7.12

Copyright: 2014-2017 Henrik Bengtsson
License: GPL (>= 2.1) (https://www.gnu.org/licenses/gpl.html)

Notes

As of Nov 2016, speedtest-cli (>= 1.0.0) itself supports outputting the results a single comma-separated value line. The format is slightly different from here, but the idea is very similar.