Speedtest via Kommandozeile (speedtest.net)

Wie schnell ist mein Internet denn im Moment wirklich ? Diese Frage stell ich mir so des öfteren und in Sachen Speedtest gibt es mittlerweile ja auch einige Tools die einen entweder befriedigen, oder zur Weißglut bringen 🙂
Eins davon ist Speedtest.net, die Seite gibt es schon etwas länger und ist weit verbreitet. Durch die große Anzahl an Servern in allen Ländern, lassen sich auch reale Werte ermitteln.
speedtest
Die Seite funktioniert mit einem Browser und Flash wunderbar, doch wie sieht es aus, wenn ich z.B. nur einen Raspberry Pi habe oder von einem Server ohne grafische Oberfläche die Geschwindigkeit per Bash checken will ?
Dafür habe ich ein cooles Tool gefunden – ist in Python geschrieben und lässt sich überall einsetzen. Der Code ist Open-Source und kann natürlich eingesehen werden.

wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
chmod +x speedtest-cli
./speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from 1&1 Internet AG (87.106.33.84)...
Selecting best server based on latency...
Hosted by Base-Mail (Frankfurt) [100.73 km]: 10.639 ms
Testing download speed........................................
Download: 93.33 Mbits/s
Testing upload speed..................................................
Upload: 90.83 Mbits/s

Das Skript ermittel standardmäßig einen Test-Server der von der Entfernung her am nächsten ist. Das macht generell Sinn, wenn man jetzt aber den Speed auch mal Interkontinental testen möchte, gibt es dafür auch die passenden Parameter:

$ speedtest-cli -h
usage: speedtest-cli [-h] [--bytes] [--share] [--simple] [--list]
[--server SERVER] [--mini MINI] [--source SOURCE]
[--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
--version Show the version number and exit

So kann man sich z.B. via –list eine Liste der (bei mir im Test über 3000!) verschiedenen Server im Speedtest.net Pool anzeigen lassen:

./speedtest-cli --list
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
....
5085) Google Fiber (Salt Lake City, UT, United States) [3122.60 km]
4178) Syringa Networks (Salt Lake City, UT, United States) [3122.60 km]
244) XMission (Salt Lake City, UT, United States) [3122.60 km]
2206) UTOPIA (Salt Lake City, UT, United States) [3122.60 km]
....

So kann man sich jetzt einen Server in der Liste anhand der ID heraussuchen und über diesen Testen, dann sieht man auch gleich – wie in meinem Fall, dass ich von Deutschland aus keine 100mbit mehr nach Montreal hinbekomme.
Was alleine schon durch die große Entfernung dazwischen eine Leistung ist 🙂

./speedtest-cli --server 1993
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from 1&1 Internet AG (87.106.33.84)...
Hosted by ElectronicBox (Montreal, QC) [5815.52 km]: 149.306 ms
Testing download speed........................................
Download: 29.63 Mbits/s
Testing upload speed..................................................
Upload: 21.57 Mbits/s

 
Viel Spaß beim Testen.