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

360

Zamiast odwiedzać strony takie jak speedtest.net , chcę sprawdzić aktualną szybkość Internetu z poziomu terminala w systemie Ubuntu. Jak mogę to zrobić?

    
zadawane kernel_panic 16.02.2012, 15:24
źródło

11 odpowiedzi

567

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

Krótka wersja jest następująca: (bez uprawnień administratora)

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

speedtest-cli jest teraz w repozytoriach Ubuntu. W przypadku Ubuntu 16.04 (Xenial) i późniejszego użycia:

sudo apt install speedtest-cli
speedtest-cli
    
odpowiedział mweisel 19.03.2013, 09:11
źródło
78

wypróbuj to w linii poleceń

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

Wypróbuj też

sourceforge.net/projects/tespeed/

dostałem go z powyższego linku

    
odpowiedział Tachyons 16.02.2012, 15:57
źródło
47

Jeśli nie możesz zawracać sobie głowy instalowaniem iperf, możesz poprzedzić dowolne polecenie, które przesuwa znaną ilość danych za pomocą polecenia time i zrób 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

    
odpowiedział One Zero 16.02.2012, 16:21
źródło
31

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

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

Na przykład

wpisując: wget http://hostve.com/neobuntu/pics/Ubu1.avi zacznie pobierać plik Ubu1.avi i wyświetlać prędkość pobierania.

Oczywiście istnieje kilka zaleceń:

  1. Szybkość przetestuj się na dobrych serwerach. 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 rzeczywistą prędkością.

  2. Najwyższa prędkość, jaką zobaczysz, to maksymalna szybkość, 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 jest 400 KB, twoje maksymalne połączenie będzie wynosić 400 KB, ponieważ jest to maksimum dla serwera, z którego pobierasz.

  3. Trzeba wykonać test co najmniej 5 razy, aby uzyskać niezawodną kontrolę prędkości lub przynajmniej zrobić 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, na którą może mieć wpływ odległość, problem z serwerem i połączenia z nim itp. Zawsze testuj na różnych serwerach.

ARIA2

Jest to alternatywa dla wget . Minusem wget jest brak równoległych połączeń. Aby użyć aria2 musimy najpierw pobrać:

   sudo apt-get install aria2

Aby go użyć, jest proste:

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

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

    
odpowiedział Luis Alvarado 16.02.2012, 16:12
źródło
18

Ponieważ speedtest-cli jest aplikacją python, znacznie łatwiej jest ją zainstalować:

pip install speedtest-cli

lub:

easy_install speedtest-cli

Zależnie od tego, jak Python jest zainstalowany w twoim systemie, być może musisz być rootem, aby to zrobić.

    
odpowiedział BobC 02.12.2013, 16:06
źródło
5

Tak się składa, że ​​podoba mi się speedometer Ubuntu cli.

speedometer -r eth0

Aby obejrzeć aktualny wykres prędkości przychodzących danych.

    
odpowiedział 6ft Dan 02.09.2016, 23:22
źródło
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 &

Następnie napisz skrypt, aby obliczyć łączne bajty pobrane i podzielić 5 sekund, otrzymasz liczbę bajtów / sekundę. Powinien być dość dokładny i można dodać więcej instancji, aby maksymalnie zwiększyć przepustowość.

Jeszcze nie przetestowałem całego skryptu, ale polecenie pojedynczego wiersza "limit czasu 5 URL-u wget" działa i otrzymujesz częściowo pobrany plik (jeśli 5 sekund nie wystarcza do ukończenia pobierania).

    
odpowiedział rexis 20.09.2013, 04:29
źródło
3

możesz użyć tespeed . jest to test prędkości sieci terminalowej, który wykorzystuje serwery z Speedtest.net . Używa najbliższego serwera testowego, ale może również użyć ręcznie podanego przez użytkownika.

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

po więcej informacji użyj:

 ./tespeed.py  -h

zapewni większą opcję testowania prędkości.

    
odpowiedział pl_rock 12.09.2015, 08:08
źródło
2

Prosty skrypt bash oparty na odpowiedzi @rexis. Możesz umieścić własne linki do testowania w links array 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 $TMP_PATH | grep total | awk '{print }')

echo "Cleaning up"
rm -rf $TMP_PATH

speed=$(expr $total_bytes / $TEST_TIME)

echo "Speed is $speed Kb/s"

exit 0
    
odpowiedział Darkside 24.03.2015, 13:28
źródło
0

Możesz też wypróbować link

Używają curla (który jest dobrze znanym narzędziem wiersza poleceń) do uruchomienia testu prędkości.

W skrócie

wget link & amp; & amp; chmod u + x speedtest.sh & amp; bash speedtest.sh

    
odpowiedział user385795 07.03.2015, 19:17
źródło
0

prosta jednolinijka testująca czas potrzebny na pobranie 100 MB (działa również na /bin/sh ):

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

objaśnienie:

  1. Zapisz znacznik czasu w $ t
  2. pobierz 100 MB, ale niczego nie przechowuj
  3. obliczyć 8 * 100mb / $t
odpowiedział rubo77 29.08.2015, 09:29
źródło

Przeczytaj inne pytania na temat tagów