Jak sprawdzić prędkość Internetu przez terminal?

466

Zamiast przechodzić do stron takich jak speedtest.net , chcę sprawdzić moją aktualną prędkość Internetu z terminala na Ubuntu. Jak mogę to zrobić?

kernel_panic
źródło
4
Wyniki, które otrzymuję dzięki speedtest-cli są znacznie poniżej tego, co otrzymuję od speedtest.net speedtest-cli Pobieranie 18,27 Mb / s Przesyłanie 3,43 Mb / s speedtest.net Pobieranie 59,38 Mb / s Przesyłanie 12,14 Mb / s Nie mogę uważaj speedtest-cli w jakikolwiek sposób za prawidłowy test prędkości sieci.
2
@ user375058: speedtest-cliUżywa tych samych serwerów (itp.) co SpeedTest.net. Powinieneś rozważyć speedtest-clii www.speedtest.netbyć równoważne, tylko z innym interfejsem. Byłbym zaskoczony, jeśli konsekwentnie otrzymujesz znacząco różne wyniki, jeśli oba korzystają z tego samego serwera. Jeśli nie używają tego samego serwera, nie masz podstaw do porównania. Na koniec, moje wyniki dla obu narzędzi różnią się od 2 do 4 razy. Sugeruję przetestowanie 2-4 serwerów i wykonanie 3–4 uruchomień dla każdego serwera i porównanie narzędzi.
jvriesem
@ user375058: Właśnie zrobiłem to, co zasugerowałem. Zobacz link w moim komentarzu poniżej, aby uzyskać wyniki.
jvriesem
1
sudo apt install speedtest-cli
ColdCold 30.09.16

Odpowiedzi:

753

Polecam do tego narzędzie speedtest-cli . Stworzyłem post na blogu ( Zmierz prędkość połączenia internetowego z wiersza poleceń systemu Linux ), który szczegółowo opisuje pobieranie, instalowanie i korzystanie z niego.

Krótka wersja to: (nie wymaga rootowania)

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -

Wynik:

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Comcast Cable (x.x.x.x)...
Selecting best server based on ping...
Hosted by FiberCloud, Inc (Seattle, WA) [12.03 km]: 44.028 ms
Testing download speed........................................
Download: 32.29 Mbit/s
Testing upload speed..................................................
Upload: 5.18 Mbit/s

Aktualizacja w 2018 r .:

Użycie pip install --user speedtest-clipozwala uzyskać wersję, która jest prawdopodobnie nowsza niż dostępna z repozytoriów Twojej dystrybucji.

Aktualizacja w 2016 r .:

speedtest-clijest teraz w repozytoriach Ubuntu. W przypadku Ubuntu 16.04 (Xenial) i nowszych użyj:

sudo apt install speedtest-cli
speedtest-cli
mweisel
źródło
2
To nie wydaje się działać poprawnie. Mam BT nieskończoności 50bBit w dół i 20Mbit w górę. Ale wyniki pokazują się jako 0,53 Mbit w dół i 0,2 Mbit w górę. Co? Nieprawidłowe wprowadzanie miejsc dziesiętnych? za pomocą wget otrzymuję 4.27M / s (34Mbit) (chociaż jakiś inny serwer)?
Piotr Kula,
34
Jak już powiedziano tutaj : Ponieważ speedtest-cli jest aplikacją Pythona, instalacja jest dużo łatwiejsza, wykonując: pip install speedtest-cli lub: easy_install speedtest-cli W zależności od tego, jak Python jest zainstalowany w twoim systemie, może być konieczne rootowanie, aby wykonać powyższe czynności.
CrandellWS,
1
Potwierdzenie, że speedtest-cli jest zepsuty . Nie pokazuje prędkości powyżej 1 Mb / s. Nie przenosi żadnych informacji, gdy twierdzi, że to robi.
int_ua
5
To powinna być naprawdę zaakceptowana odpowiedź ... speedtest-cli działa dla mnie dobrze; myślę, że @int_ua miał problemy ze zgodnością lub problemy z Internetem.
peelman
2
To powinna być właściwa odpowiedź. Test prędkości oznacza pobieranie i przesyłanie. Pierwsza odpowiedź TYLKO mierzy prędkość pobierania, która NIE jest pełnym obrazem prędkości twojego połączenia internetowego. Zwłaszcza jeśli hostujesz coś na tym komputerze!
Emil Borconi,
92

spróbuj tego w wierszu poleceń

wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip

spróbuj tego też

sourceforge.net/projects/tespeed/

dostałem to z powyższego linku

Tachyony
źródło
2
Czy możesz wyjaśnić, co /dev/nulloznacza skrót?
orzechowy o natty
12
Jest to plik specjalny, który po prostu usuwa zapisane na nim dane,
Tachyons,
2
Dla mnie na Ubuntu 14.10 z pythonem 2.7.8 polecenie wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zipdziała znacznie lepiej niż użycie speedtset-clipóźniej wydaje się zawieszać, a ^ C nie przerywa polecenia. Z wget nie mam problemów z odcięciem pobierania pobierania ^ ^
Willoczy
1
@mlissner, wygląda jak pierwsza prędkość w megabajtach, druga w megabajtach ..
vp_arth
1
@mlissner 1,5 x 8 = 12. jeden to kb / s, a drugi to KB / s :-)
Tachyons,
55

Jeśli nie możesz mieć kłopotów z instalacją iperf, możesz poprzedzić dowolne polecenie, które przesuwa znaną ilość danych za pomocą timepolecenia i wykonać sumę.

iperf jest prosty i łatwy w użyciu.

Wymaga klienta i serwera.

(na serwerze)

 user@server$ iperf -s

(na kliencie)

 user@client$ iperf -c server.domain
 ------------------------------------------------------------
 Client connecting to 192.168.1.1, TCP port 5001
 TCP window size: 16.0 KByte (default)
 ------------------------------------------------------------
 [  3] local 192.168.1.3 port 52143 connected with 192.168.1.1 port 5001
 [ ID] Interval       Transfer     Bandwidth
 [  3]  0.0-10.0 sec    113 MBytes  94.7 Mbits/sec

Więcej szczegółów

One Zero
źródło
7
+1 iperf jest fantastyczny do sprawdzania prędkości sieci Ethernet i WIFI
kfmfe04
1
iperfjest świetny dla sieci LAN, ale użytkownik pyta o WAN.
IMTheNachoMan,
34

Cóż, używam wgetdo tego. To małe narzędzie ładnie mówi mi, jaką mam prędkość.

Aby go użyć, po prostu wskaż plik w Internecie, który jest stosunkowo większy, abyś mógł go lepiej oszacować.

Na przykład

pisanie: wget http://hostve.com/neobuntu/pics/Ubu1.avirozpocznie pobieranie pliku Ubu1.avi i pokaże, z jaką prędkością jest pobierany.

wprowadź opis zdjęcia tutaj

Oczywiście istnieje kilka zaleceń:

  1. Sprawdź swoją szybkość dzięki dobrym serwerom. W przypadku mojego łącza prędkość jest mniejsza niż 200 KB, więc jeśli masz wyższą prędkość, serwer będzie dla ciebie wąskim gardłem, a nie twoją rzeczywistą prędkością.

  2. Najwyższa prędkość, jaką zobaczysz, to maksymalna prędkość, jaką może zaoferować twoje połączenie i połączenie z serwerem. Jeśli twoje połączenie ma 512 KB, a miejsce, w którym pobierasz, to 400 KB, twoje maksymalne połączenie wyniesie 400 KB, ponieważ jest to maksimum dla serwera, z którego pobierasz.

  3. Musisz wykonać test co najmniej 5 razy, aby mieć niezawodną kontrolę prędkości lub przynajmniej wykonać to przez minutę lub dwie. Pomoże to w dokładniejszym sprawdzeniu.

  4. Musisz mieć co najmniej 4 lub 5 różnych źródeł testowania, aby uzyskać dokładniejszą prędkość. Nigdy nie testuj tylko z tej samej witryny, ponieważ może to mieć wpływ na odległość do niej, problemy na serwerze i połączenia z nim itp. Zawsze testuj z różnych serwerów.

ARIA2

To jest alternatywa dla wget. Minusem wgetjest brak równoległych połączeń. Aby skorzystać z aria2, musimy go najpierw pobrać:

   sudo apt-get install aria2

Korzystanie z niego jest proste:

wprowadź opis zdjęcia tutaj

Na zdjęciu -x 4 pokazuje, ile połączeń równoległych chcemy użyć. Parametr CN w następnym wierszu pokazuje, ile aktywnych połączeń równoległych mogło pobrać z tej witryny. W tym przypadku CN ma 4. Ale jeśli spróbujemy mieć więcej połączeń, otrzymamy coś takiego:

wprowadź opis zdjęcia tutaj

Ustawiliśmy 8 równoległych połączeń, ale strona zezwala tylko na maksymalnie 5, jak pokazuje CN: 5. Można to rozwiązać za pomocą opcji -j , która mówi aria2c, ile chcemy maksymalnych równoczesnych połączeń (domyślnie jest to 5), ale jeśli serwer to ograniczył, -j nie będzie działać.

Luis Alvarado
źródło
1
wget nie jest (jeszcze) w stanie dokonać podziału na segmenty, to znaczy pobrać pojedynczy plik przy użyciu wielu (równoległych) połączeń, więc jeśli twój dostawca usług internetowych ogranicza prędkość na jedno połączenie, nie uzyskasz dokładnych wyników ... byłby bardziej precyzyjny test, aby użyć innego narzędzia, które może przynajmniej korzystać z pobierania podzielonego na segmenty (np. aria2)
Mladen B.
3
To NIE jest test prędkości, to tylko test prędkości POBIERZ! Test prędkości Internetu oznacza obciążenie w dół i w górę! Druga odpowiedź, a wszystkie inne wspominające o speedtest-cli mają właściwe podejście.
Emil Borconi,
1
@EmilBorconi Masz rację, ale w prawdziwym życiu nie przeprowadzamy testów porównawczych prędkości Internetu, są to tylko średnie bieżące testy prędkości każdego użytkownika domowego bez potrzeby stron takich jak speedtest. Szybkość pobierania (co jest wystarczające dla każdego, kto próbuje sprawdzić, czy ma wąskie gardło) jest wystarczająco dobrym testem. Pełny test prędkości w dół / w górę sprawdziłby, jaki pełny zakres prędkości zależy od twojego dostawcy usług internetowych. Tak, to byłoby najlepsze rozwiązanie, ale w przypadku każdego szybkiego scenariusza testowego nawet prosty wget wykonałby to zadanie, ponieważ zwykle ludzie martwią się bardziej prędkością pobierania niż wysyłaniem.
Luis Alvarado,
1
@LuisAlvarado przepraszam, jeśli zabrzmiało to niegrzecznie, myślę, że ludzie powinni być w stanie w pełni zrozumieć, o co pytają / i jaka jest akceptowana odpowiedź. Wielu początkujących zajrzy na fora i przyjmie / odbierze / zatrzyma się na zaakceptowanej odpowiedzi i utworzy fałszywy obraz w swoim. I tak, pobieranie jest ważniejsze niż przesyłanie, chyba że jesteś maniakiem na Facebooku, który publikuje selfie co 5 minut, a następnie rozpocznij walkę z usługodawcą internetowym tylko dlatego, że przetestowałeś pobieranie, co jest dobre, ale masz gównianą przesyłkę ... Jeszcze raz przepraszam jeśli mój ton był niegrzeczny, nie chciałem obrażać ...
Emil Borconi
1
Podoba mi się to wgetlepiej, curlponieważ wgetwyświetla MB/s(bardzo jasne, że jest to MBytes / s), podczas gdy curlwyświetla tylko k(nie bardzo oczywiste, że jest to KBytes / s).
wisbucky
19

Ponieważ speedtest-cli jest aplikacją pythonową, instalowanie jest znacznie łatwiejsze, wykonując:

pip install speedtest-cli

lub:

easy_install speedtest-cli

W zależności od tego, jak Python jest zainstalowany w twoim systemie, może być konieczne rootowanie, aby wykonać powyższe czynności.

BobC
źródło
7

Zdarza mi się lubić speedometerUbuntu cli.

speedometer -r eth0

Aby obejrzeć na żywo wykres prędkości danych przychodzących.

6 stóp Dan
źródło
właśnie tego szukałem przez jakiś czas! dzięki! ale nie podoba mi się, że pokazuje prędkości w Kib, a nie w Kb lub KB
redbeam_ 24.09.16
3

Uruchom kilka instancji wget z poleceniem timeout na dużych plikach:

#!/bin/bash

timeout 5 wget -q url_1/100MB.zip &
timeout 5 wget -q url_2/file.zip &
timeout 5 wget -q url_3/sample.mov &
timeout 5 wget -q url_4/speech.mp4 &

A potem napisz skrypt, aby obliczyć całkowitą liczbę pobranych bajtów i podzielić 5 sekund, a otrzymasz liczbę bajtów / sek. Powinny być dość dokładne i możesz dodać więcej wystąpień, aby zmaksymalizować przepustowość.

Nie przetestowałem jeszcze pełnego skryptu, ale polecenie jednowierszowe „limit czasu 5 wget url” działa, w wyniku czego otrzymujesz częściowo pobrany plik (jeśli 5 sekund nie wystarczy, aby zakończyć pobieranie).

rexis
źródło
Wymagałoby to konfiguracji serwera ...
Braiam
url_1,2,3,4 może być dowolny, na przykład serwery publiczne.
rexis
na przykład timeout 5 wget http://speedtest.netcologne.de/test_100mb.bin -O /tmp/temp5secnastępnie przeanalizuj rozmiar pliku i podziel przez 5: expr $(stat --printf="%s" /tmp/temp5sec) / 5 / 1024w kbit / s
rubo77
3

możesz użyć tespeed. jest to test prędkości sieci terminali, który korzysta z serwerów Speedtest.net. Używa najbliższego serwera testowego, ale może także użyć jednego ręcznie określonego przez użytkownika.

 git clone git://github.com/Janhouse/tespeed.git
 cd tespeed
 git submodule init
 git submodule update
 ./tespeed.py 

wprowadź opis zdjęcia tutaj

Aby uzyskać więcej informacji, użyj:

 ./tespeed.py  -h

zapewni więcej opcji testu prędkości.

pl_rock
źródło
Uwaga: wymagalxml
Matt
2

prosty linijka, która sprawdza, ile czasu zajmuje pobranie 100 MB (działa /bin/shrównież na ):

t=$(date +"%s"); wget http://speedtest.tele2.net/100MB.zip -O ->/dev/null ; echo -n "MBit/s: "; expr 8 \* 100 / $(($(date +"%s")-$t))

wyjaśnienie:

  1. przechowuj znacznik czasu w $ t
  2. pobierz 100mb, ale niczego nie przechowuj
  3. Oblicz 8 * 100mb / $t
rubo77
źródło
Działa to świetnie, ponieważ testuję z bezstanowego rootFS-a tylko do odczytu i wgetnie wyświetlałem prędkości.
Josh Habdas
2

Prosty skrypt bash oparty na odpowiedzi @rexis. Możesz umieścić własne linki do testowania w linkstablicy lub odczytać je z pliku

#!/bin/bash
export LC_ALL=C  #make output in English eg for later use with "du | grep"

TMP_PATH=/tmp/speedtest_data/
TEST_TIME=5

rm -rf $TMP_PATH && mkdir $TMP_PATH

links=("http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-2b.bin" "http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-1b.bin" "http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-1c.bin" "http://ftp.ntua.gr/pub/linux/ubuntu-releases-dvd/quantal/release/ubuntu-12.10-server-armhf+omap.img" "http://ftp.funet.fi/pub/Linux/INSTALL/Ubuntu/dvd-releases/releases/12.10/release/ubuntu-12.10-server-armhf+omap.img" "http://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/13.2/iso/openSUSE-13.2-DVD-x86_64.iso")

echo "Testing download"

for link in ${links[*]}
do
    timeout $TEST_TIME wget -q -P $TMP_PATH $link &
done

wait

total_bytes=$(du -c -b $TMP_PATH | grep total | awk '{print $1}')

echo "Cleaning up"
rm -rf $TMP_PATH

speed=$(echo "scale=2; $total_bytes / $TEST_TIME / 128" |bc)

echo "Speed is $speed Mbit/s"

exit 0
Ciemna strona
źródło
jeden minus - co powiesz na to, kiedy użyję innego języka jako angielskiego? patrz: grep :) część
ceph3us
1

Aby wygodnie uzyskać prędkość pobierania w bitach na sekundę, w pliku $ HOME / .bash_aliases zdefiniowałem następujące elementy:

speed-test='wget --output-document=/dev/null --report-speed=bits http://speedtest.wdc01.softlayer.com/downloads/test500.zip'

gdzie:

--output-document=/dev/null skutecznie odrzuca wyjście wget

--report-speed=bits wyświetla średnią prędkość pobierania wget w bitach na sekundę (bps) zamiast domyślnych bajtów na sekundę (bps)

krata
źródło
0

Chciałem czegoś bardziej zaawansowanego niż speedtest.net i różnych rozwiązań, które opierają się wyłącznie na jednej stronie internetowej. Zrobiłem więc to, co zwykle, i napisałem własne rozwiązanie:

https://github.com/cubiclesoft/network-speedtest-cli

Z listy funkcji:

  • Testowanie prędkości SSH / SFTP (port 22).
  • Typowe porty TCP 80, 443 i 8080, a także losowe testowanie prędkości portów TCP przy użyciu niestandardowego serwera TCP / IP, który obsługuje prędkości do 2,2 Gb / s i 780 Mb / s.
  • Dość podstawowe testowanie opóźnienia sieci.
  • Rozwiń kropelki Digital Ocean i przetestuj prędkość SSH / SFTP i różne porty TCP.
  • Speedtest.net i niestandardowe testy prędkości OoklaServer. Daje podobne wyniki do testów pojedynczego połączenia w single.speedtest.net.
  • Wyjście Pure JSON w trybie cichym (-s).

Jest to bardziej ogólne rozwiązanie, z którego mogą korzystać inne aplikacje. Udało mi się wskazać na problem z siecią ISP, który spowodował podwojenie mojej prędkości pobierania SFTP, co spowodowało większe szczęście.

CubicleSoft
źródło