speedtest-cli/README.rst

174 lines
5.7 KiB
ReStructuredText

speedtest-cli
=============
Command line interface for testing internet bandwidth using
speedtest.net
.. image:: https://pypip.in/v/speedtest-cli/badge.png
:target: https://pypi.python.org/pypi/speedtest-cli/
:alt: Latest Version
.. image:: https://pypip.in/d/speedtest-cli/badge.png
:target: https://pypi.python.org/pypi/speedtest-cli/
:alt: Downloads
.. image:: https://pypip.in/license/speedtest-cli/badge.png
:target: https://pypi.python.org/pypi/speedtest-cli/
:alt: License
Versions
--------
speedtest-cli works with Python 2.4-3.4
Installation
------------
pip / easy\_install
~~~~~~~~~~~~~~~~~~~
::
pip install speedtest-cli
or
::
easy_install speedtest-cli
Github
~~~~~~
::
pip install git+https://github.com/sivel/speedtest-cli.git
or
::
git clone https://github.com/sivel/speedtest-cli.git
python speedtest-cli/setup.py install
Just download (Like the way it used to be)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py
chmod +x speedtest-cli
or
::
curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py
chmod +x speedtest-cli
Usage
-----
::
$ speedtest-cli -h
usage: speedtest_cli.py [-h] [--bytes] [--share] [--simple] [--list]
[--server SERVER] [--mini MINI] [--source SOURCE]
[--timeout TIMEOUT] [--secure] [--callback CALLBACK]
[--callback-help] [--version]
Command line interface for testing internet bandwidth using speedtest.net.
--------------------------------------------------------------------------
https://github.com/sivel/speedtest-cli
optional arguments:
-h, --help show this help message and exit
--bytes Display values in bytes instead of bits. Does not
affect the image generated by --share
--share Generate and provide a URL to the speedtest.net share
results image
--simple Suppress verbose output, only show basic information
--list Display a list of speedtest.net servers sorted by
distance
--server SERVER Specify a server ID to test against
--mini MINI URL of the Speedtest Mini server
--source SOURCE Source IP address to bind to
--timeout TIMEOUT HTTP timeout in seconds. Default 10
--secure Use HTTPS instead of HTTP when communicating with
speedtest.net operated servers
--callback CALLBACK Script to run at certain stages of operation
--callback-help Show help about --callback
--version Show the version number and exit
::
$ speedtest-cli --callback-help
speedtest-cli callback script help
----------------------------------
If a callback script is given via --callback, that script will be run
during operation. The value passed to --callback may be the path to
a script or a shell fragment which will be passed to the shell.
The environment of the callback script is the same as the environment
of speedtest-cli plus variables starting with 'STC_' that have information
about the current state of the program. Each execution of the callback
script will retain all the previous 'STC_' variables and possibly add new
variables.
Following are the points at which the callback script will be executed and
what 'STC_' enviornment variables will be available (only new or changed
variables will be listed for each state):
pre_ping - run before gathering ping time results
STC_STATE - set to 'pre_ping'
STC_UNITS - units used for the DL and UL speeds, e.g. Mbit/s
post_ping
STC_STATE - set to 'post_ping'
STC_PING_MS - the calculated ping latency in milliseconds
pre_download
STC_STATE - set to 'pre_download'
post_download
STC_STATE - set to 'post_download'
STC_DL_SPEED - calculated speed in STC_UNITS units
STC_DL_SPEED_RAW - calculated speed in bits/sec
pre_upload
STC_STATE - set to 'pre_upload'
post_upload
STC_STATE - set to 'post_upload'
STC_UL_SPEED - calculated speed in STC_UNITS units
STC_UL_SPEED_RAW - calculated speed in bits/sec
examples:
# show all STC_ variables set during each callback
speedtest-cli --callback --simple 'echo "$STC_STATE:"; env | grep "^STC_" | sort; echo'
# only take action when the post_upload state is reached
speedtest_cli --callback 'test $STC_STATE = 'post_upload' && env | grep "^STC_.*SPEED"'
Inconsistency
-------------
It is not a goal of this application to be a reliable latency reporting tool.
Latency reported by this tool should not be relied on as a value indicative of ICMP
style latency. It is a relative value used for determining the lowest latency server
for performing the actual speed test against.
There is the potential for this tool to report results inconsistent with Speedtest.net.
There are several concepts to be aware of that factor into the potential inconsistency:
1. Speedtest.net has migrated to using pure socket tests instead of HTTP based tests
2. This application is written in Python
3. Different versions of Python will execute certain parts of the code faster than others
4. CPU and Memory capacity and speed will play a large part in inconsistency between
Speedtest.net and even other machines on the same network
Issues relating to inconsistencies will be closed as wontfix and without
additional reason or context.