Viele von euch werden wahrscheinlich schon einmal Speedtest.net im Browser genutzt haben. So lässt sich sehr einfach prüfen, ob der Internetanbieter auch wirklich die versprochene Geschwindigkeit über die Datenleitung bringt, oder ob das Internet nur langsam in den Rechner tröpfelt. Neben der Browser-Variante des Dienstes, gibt es das Ganze auch schon eine ganze Weile als App fürs Handy. „Normale“ PCs und Handys sind so gut abgedeckt, aber wenn man die Anbindung eines kleinen Servers oder eines Raspberry Pis ohne eine graphische Oberfläche testen möchte, muss man zu anderen Mitteln greifen… oder man fährt Speedtest.net per Skript.

Als Kommandozeilentool braucht speedtest-cli keine graphische Umgebung, das Skript lässt sich auch auf einfachen Systemen wie eben dem Raspberry Pi mit etwa Raspbian ausführen. speedtest-cli muss auch nicht zwingend installiert werden, das Skript kann man direkt von Github laden und ausführen. Arch-Linux-User finden speedtest-cli jedoch auch im AUR, so dass sich das Skript ohne weiteren Umstand auf den Rechner laden lässt

$ wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
$ chmod +x speedtest-cli
$ ./speedtest-cli

Wer speedtest-cli öfters braucht, der schiebt das Skript nach ~/bin oder mit Root-Rechten nach /usr/local/bin, so dass es im $PATH steht und von jedem Verzeichnis aus aufrufbar ist — bei der Installation unter Arch landet das Skript sowieso ordentlich im Dateisystem, so dass man sich darum keine Gedanken machen muss.

Mit Speedtest.net lässt sich die Leistung der eigenen Internetverbindung testen.
Mit Speedtest.net lässt sich die Leistung der eigenen Internetverbindung testen.
speedtest-cli führt den Leistungstest von speedtest.net auch ohne einen Browser aus.
speedtest-cli führt den Leistungstest von speedtest.net auch ohne einen Browser aus.

speedtest-cli kennt neben dem einfachen Aufruf ohne Optionen auch noch eine Reihe von Schaltern. So lässt sich mit etwa mit speedtest-cli --share der Pfad zur Imagedatei mit den Ergebnissen des Leitungstests ausgeben. Oder man ruft mit  speedtest-cli --list die Liste der Speedtest-Server ab, so dass man mit  speedtest-cli --server SERVER einen Testserver gezielt anwählen kann.

$ speedtest-cli --help
usage: speedtest-cli [-h] [--share] [--simple] [--list] [--server SERVER]

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
--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

Insgesamt funktioniert speedtest-cli ähnlich gut wie Speedtest.net, allerdings beobachten einige User doch recht schwankende Ergebnisse des Kommandozeilentools. Auch bei mir spuckte speedtest-cli öfters mal Werte aus, die eigentlich nicht sein konnten. Kommen einem die Werte komisch vor, dann sollte man also lieber noch einmal den Test wiederholen, nicht dass man umsonst die Verkabelung nochmal neu macht,

speedtest-cli führt den Leistungstest von speedtest.net auch ohne einen Browser aus.
speedtest-cli führt den Leistungstest von speedtest.net auch ohne einen Browser aus.
Vorheriger ArtikelGIMP-Team sucht Verstärkung bei der Integration der GIMP Plugin Registry
Nächster ArtikelCivilization: Beyond Earth wird es auch für Linux geben
Hallo, ich bin Christoph - Linux-User, Blogger und pragmatischer Fan freier Software. Wie ihr ohne Zweifel bemerkt haben solltet, schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Twitter oder natürlich dem Blog folgen.

22 Kommentare

  1. Danke für den Tipp! Nach so etwas habe ich gesucht.
    Bei mir waren die Ergebnisse zu Beginn auch ziemlich krass. Teils 300 MBit/s

    Nach ~ dem 8. Test hat sich die Transferrate auf realistische 50 MBit/s eingependelt.

    LG Thomas

  2. Hallo Christoph

    Ich möchte mit folgendem Aufruf per cronjob eine längerfristige Logdatei erzeugen:
    date && speedtest-cli –server 1746 >> speedtest.log

    In der Logdatei soll dann nur folgendes stehen:

    Do 7. Mai 06:10:01 CEST 2015
    Download: 29.12 Mbit/s
    Do 7. Mai 06:25:01 CEST 2015
    Download: 25.82 Mbit/s

    oder noch besser:

    Do 7. Mai 06:10:01 CEST 2015 Download: 29.12 Mbit/s
    Do 7. Mai 06:25:01 CEST 2015 Download: 25.82 Mbit/s

    u.s.w.

    Daraus möchte ich dann per Excel eine Kurve machen.
    Ich habe leider von Scriptsprachen keine Ahnung.
    Was muss ich in der speedtest-cli ändern, dass es funktioniert?

    Grüße

    Alois

    • Das wollte ich auch schonmal automatisieren. Schau mal mit speedtest-cli in die Hilfe. Mit der Option --simple bekommst du eine Ausgabe, die sich etwas leichter weitervearbeiten lässt.

      $ speedtest-cli --simple
      Ping: 2.942 ms
      Download: 90.01 Mbit/s
      Upload: 45.55 Mbit/s

      Bevor du dir aber die Mühe machst, das alles selber zu Skripten, schau lieber mal bei Github vorbei. Dort bin ich auf speedtest-linux gestoßen, das einen Wrapper um speedtest-cli baut. In der Standardeinstellung schreibt speedtest das Log nach ~/var/log/net/speedtest.log, das lässt sich bei Bedarf aber auch anpassen

      $ wget https://raw.githubusercontent.com/rsvp/speedtest-linux/master/speedtest
      $ chmod +x speedtest
      $ ./speedtest --log
      $ cat ~/var/log/net/speedtest.log 
      2015-05-07, 17:32, 2.636, 89.78, 54.29
      2015-05-07, 17:34, 2.914, 89.05, 51.38

      Das Ergebnis lässt sich dann schön weiterverarbeiten.

      Grüße
      Christoph

      • Danke für den Tipp.
        Habe jetzt einen raspberry pi, um an der Fritzbox regelmäßig und permanent zu messen, ob mich mein Anbieter (wie ich meine) nicht bescheißt

      • Du könntest auch einfach das flag –csv nutzen, dann bekommst du die Werte im CSV-Format und kannst die dann direkt in eine entsprechende Datei appenden. Damit sollten das Thema recht einfach erledigt sein.

  3. Ist es möglich den Speedtest auch über ein bestimmtes Interface laufen zu lassen bzw. über eine andere Routingtabelle. Ich habe einen VPN Tunnel über den eine Internetverbindung getunnelt wird, diese möchte ich gerne regelmäßig checken.

    Viele Grüße

    Patrik

    • Hmmmm, Android basiert zwar auf dem Linux-Kernel, doch das System ist nicht wirklich mit einem Linux zu vergleichen. Speedtest-cli ist zwar als Python-Programm prinzipiell portabel, aber das muss nicht heißen, dass es funktioniert. Ich würde mal direkt den Entwickler des Programms ansprechen. Grüße, Christoph.

      • Hi, ich habe es jetzt vor einem Monat selfmade via shellscript gelöst und bin mit dem Ergebnis bis jetzt zufrieden.
        Dazu waren einige Vorbereitungen nötig.
        Android rooten
        Busybox + Terminal Emulator installieren
        Init.d nachrüsten
        Cronjob nachrüsten
        Skript finden, modifizieren und einrichten.
        Den Vorgang (ohne Android Stress) habe ich mal kurz hier beschrieben.
        Auswertungen habe ich auch schon, Beschreibung folgt noch.
        http://c-falke.de/automatischer-speedtest-selbst-gebaut/
        Ein ausgedientes Smartphone ist ideal für solche Messungen. Warum wird in unserer Gesellschaft denn nur immer alles closed-sourced und nach Nutzung weggeworfen ;-).

      • Ich habe an einem Server zwei Netzwerkinterfaces. Beide Karten haben jeweils eine eigene Internetanbindung.
        Würde gerne das zweite Interface ansprechen um so regelmäßig die Backup Anbindung zu testen…

        Viele Grüße
        Jona

        • Ich habe genau die gleiche Problemstellung. Wäre schon, wenn es eine Lösung geben würde.
          ….
          Edit:
          ich hätte früher im nachschauen sollen. Es gibt einen source-Parameter: ./speedtest-cli –server 1746 –source 88.xxx.21.yyy
          Ich muss dazu sagen, dass ich bereits sourcerouting eingerichtet habe, so dass ich je nach source-ip eine andere Default-route nehme. z.B. auch für mtr. Das geht dann auch mit speedtest-cli

  4. Die verschiedene Ergebnisse bei der Auswertung, da darf man eins nicht vergessen;
    Die Auslastung der eigenen Server, des anderen Server’s und das Netzwerk Allgemein !
    Wenn im RZ, die Anbindung und das Interne Netzwerk „Voll“ ist, schlägt sich das auch bei solch test nieder, daher ist es wichtig, es mehrmals zu wiederholen um nen Durchschnitt zu bekommen 🙂

  5. Hallo ist es möglich das script so anzupassen das es nach dem ausführen des tests das erzeugte .png bild direkt auf den eigenen server herunter läd (wget)?

  6. Ein mySql Datenbank mit folgenden Feldern anlegen :

    Datenbank ltespeed
    Tabellenstruktur für Tabelle lte1
    Spalte Typ Null Standard Verweise Kommentare MIME-Typ
    id bigint(20) Nein
    serverid int(11) Nein
    sponsor text Nein
    server text Nein
    timestamp timestamp Nein CURRENT_TIMESTAMP
    distance float Nein
    ping float Nein
    dlrate float Nein
    uplrate float Nein

    danach ein Python script „speedtest.py“ anlegen:
    #####################################################
    import os
    import MySQLdb

    def adddata( ):
    try:
    db = MySQLdb.connect(„synologynas“, „root“, „raspberry“, „ltespeed“)
    curs=db.cursor()
    f = os.popen(„speedtest-cli –csv –csv-delimiter ‚;'“ )
    d1 = f.read()
    d2=d1.rstrip(‚\n‘)
    d3=d2.split(„;“)
    dbstring=“““INSERT INTO `lte1` ( `serverid` , `sponsor` , `server` , `distance` , `ping` , `dlrate` , `uplrate` ) VALUES ( ‚{:6}‘, ‚{:30}‘ , ‚{:30}‘, ‚{:10}‘, ‚{:5}‘, ‚{:25}‘, ‚{:25}‘ )“““.format( d3[0], d3[1], d3[2], d3[4], d3[5], d3[6] ,d3[7])
    curs.execute( dbstring )
    db.commit()
    db.close()
    except:
    print „Error: the database is being rolled back“
    db.rollback()

    return adddata

    adddata()

    ###############################################################
    Danach das python script per crontab laufen lassen z.B.

    # m h dom mon dow command
    */10 * * * * sudo python speedtest.py

    ——————————————————————————————————————

    Das Ganze schreibt alle 10 min einen Eintrag in die MySql Datenbank der den Output aus dem Speedtest enthält

    • Vielen Dank dafür! Habe ich das entsprechend übernommen und werde das demnächst mal umbauen auf eine REST-API und dann in meinem Blog veröffentlichen! Dank dir für die Idee mit dem Parsen des Outputs, hat mir sehr geholfen!

  7. Hallo ich habe eine Frage für einen Bekannten, der sich abmüht, um die Geschwindigkeitsmessungen an seine Bedürfnisse anzupassen. Kannst du mir hier Infos geben: Wie die Einheit der Geschwindigkeitsmessungen in speedtest-cli geändert werden kann?

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein