speedtest-cli

Mierzy prędkość łącza internetowego (pobieranie, wysyłanie, ping) z linii poleceń.

speedtest-cli to napisane w Pythonie narzędzie wiersza poleceń, które mierzy przepustowość Twojego łącza, korzystając z infrastruktury serwerów Speedtest.net. Dostajesz trzy kluczowe liczby: prędkość pobierania (download), wysyłania (upload) oraz opóźnienie (ping). Idealne, gdy siedzisz na maszynie bez GUI (VPS, serwer, kontener) i chcesz szybko sprawdzić, czy to łącze jest wolne, czy tylko wydaje Ci się, że jest wolne.

Składnia i najważniejsze opcje

Podstawowe wywołanie jest banalnie proste: speedtest-cli. Bez żadnych argumentów samo znajdzie najbliższy serwer i zrobi pełny test. Reszta to dostrajanie:

  • --simple — okrojony output: tylko ping, download i upload, bez gadania o wyszukiwaniu serwerów i konfiguracji.
  • --server ID — wymusza test przeciwko konkretnemu serwerowi o danym ID (możesz podać wielokrotnie).
  • --list — wypisuje listę dostępnych serwerów wraz z ich ID i odległością w kilometrach.
  • --json — wynik w formacie JSON, idealny do parsowania w skryptach.
  • --csv — wynik w jednej linii CSV, wygodny do logowania w czasie.
  • --bytes — pokazuje wartości w bajtach zamiast w bitach (uwaga na tę różnicę, o niej niżej).
  • --share — generuje link do obrazka z wynikiem na Speedtest.net.
  • --no-upload / --no-download — pomija odpowiednio test wysyłania lub pobierania.

Przykłady użycia

  • speedtest-cli --simple — szybki, zwięzły wynik bez zbędnego szumu. To Twój codzienny chleb.
  • speedtest-cli --list | grep -i "Warsaw" — znajdź ID serwerów w Warszawie, żeby potem testować przeciwko konkretnemu.
  • speedtest-cli --server 24304 — test do wskazanego serwera; przydatne, gdy chcesz porównywalne wyniki dzień po dniu.
  • speedtest-cli --json >> /var/log/speedtest.log — zrzuca wynik jako JSON do pliku, np. z crona, do monitoringu łącza w czasie.
  • speedtest-cli --no-upload --bytes — mierzy tylko pobieranie i podaje wynik w bajtach na sekundę.

Częste błędy i pułapki

Pierwsza klasyczna wpadka: bity kontra bajty. Domyślnie wynik jest w megabitach na sekundę (Mbit/s), a nie megabajtach. Twoje łącze „100 Mbit” to około 12,5 MB/s przy pobieraniu pliku — to nie błąd narzędzia, tylko matematyka. Flaga --bytes przełącza jednostki, ale wtedy nie porównuj wyników z tymi bez niej.

Druga sprawa: to nie to samo co oficjalny klient speedtest od Ookla. Ten napisany w Pythonie projekt (sivel/speedtest-cli) jest niezależny i bywa mniej dokładny przy bardzo szybkich łączach (powyżej ~500 Mbit/s potrafi zaniżać). Do gigabitów rozważ oficjalny binarny klient Ookla.

Trzecia: automatyczny wybór serwera nie zawsze daje najlepszy wynik. Jeśli liczby skaczą między pomiarami, przypnij konkretny serwer przez --server, żeby mieć stały punkt odniesienia. I nie odpalaj testu co minutę z crona na produkcji — sam zużywa transfer.

Powiązane komendy: ping, mtr, iperf3, curl, wget, ethtool.