Come controllare la velocità di Internet tramite terminale?


468

Invece di visitare siti come speedtest.net , voglio controllare la mia attuale velocità di Internet dal terminale su Ubuntu. Come posso farlo?


4
I risultati che sto ottenendo con speedtest-cli sono ampiamente al di sotto di quello che ottengo da speedtest.net speedtest-cli Scarica 18,27 Mbits / s Carica 3,43 Mbits / s speedtest.net Scarica 59,38 Mbits / s Carica 12,14 Mbits / s Non riesco considerare speedtest-cli come un test valido sulla velocità della rete.

2
@ user375058: speedtest-cliutilizza gli stessi server (ecc.) di SpeedTest.net. Dovresti considerare il speedtest-clie www.speedtest.netdi essere equivalente, solo con un front-end diverso. Sarei sorpreso se ottenessi risultati significativamente diversi in modo coerente se entrambi utilizzano lo stesso server. Se non utilizzano lo stesso server, non hai basi per il confronto. Infine, i miei risultati per entrambe le utility variano di 2-4 da un ciclo all'altro. Ti suggerisco di testare 2-4 server, eseguire 3-4 corse per ciascun server e confrontare strumenti.
jvriesem,

@utente375058: In realtà ho appena fatto ciò che ho suggerito. Vedi il link nel mio commento qui sotto per i miei risultati.
jvriesem,

1
sudo apt installa speedtest-cli
ColdCold

Risposte:


753

Per questo consiglio lo strumento speedtest-cli . Ho creato un post sul blog ( Misura della velocità della connessione Internet dalla riga di comando di Linux ) che illustra in dettaglio il download, l'installazione e l'utilizzo di esso.

La versione breve è questa: (non è richiesto il root)

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

Produzione:

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

Aggiornamento nel 2018:

Usando pip install --user speedtest-cliottieni una versione che è probabilmente più recente di quella disponibile dai repository della tua distribuzione.

Aggiornamento nel 2016:

speedtest-cliè ora nei repository di Ubuntu. Per Ubuntu 16.04 (Xenial) e versioni successive utilizzare:

sudo apt install speedtest-cli
speedtest-cli

2
Questo non sembra funzionare correttamente. Ho BT infinity 50bBit down e 20Mbit su. Ma i risultati si presentano come 0,53 Mbit in basso e 0,2 Mbit in alto. Eh? Posizionamento decimale errato? usando wget ottengo 4.27M / s (34Mbit) (qualche altro server però)?
Piotr Kula,

34
Come è già stato affermato qui : poiché speedtest-cli è un'applicazione Python, è molto più facile da installare eseguendo: pip install speedtest-cli oppure: easy_install speedtest-cli A seconda di come Python è installato sul sistema, potrebbe essere necessario essere root per fare quanto sopra.
CrandellWS,

1
Confermando che speedtest-cli è rotto . Non mostra velocità superiori a 1 Mbps. Non trasferisce alcuna informazione quando afferma di farlo.
int_ua,

5
Questa dovrebbe davvero essere la risposta accettata ... speedtest-cli funziona bene per me; pensa che @int_ua avesse problemi di compatibilità o problemi di internet.
peelman,

2
Questa dovrebbe essere la risposta giusta. Test di velocità significa download e upload. La prima risposta misura SOLO la velocità di download, che NON è un quadro completo della velocità della tua connessione Internet. Soprattutto se stai ospitando qualcosa su quella macchina!
Emil Borconi,

92

prova questo dalla riga di comando

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

prova anche questo

sourceforge.net/projects/tespeed/

ottenuto dal link sopra


2
Potresti spiegare cosa /dev/nullsignifica?
matto per natty

12
È un file vocale che semplicemente i dati di cancellazione scritti su di esso,
Tachyons

2
Per me su Ubuntu 14.10 con python 2.7.8 il comando wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zipfunziona molto meglio dell'uso speedtset-clisuccessivo sembra bloccarsi e ^ C non riesce a interrompere il comando. Con wget non ho problemi a tagliare il formato di download con ^ C
Willoczy il

1
@mlissner, sembra la prima velocità in megabit, la seconda in megabyte ..
vp_arth

1
@mlissner 1.5 x 8 = 12. uno è kbps e l'altro è KBps :-)
Tachyons,

55

Se non ti preoccupi di installare iperf, puoi precedere qualsiasi comando che sposta una quantità nota di dati con il timecomando e fare una somma.

iperf è semplice e facile da usare.

Richiede un client e un server.

(sul server)

 user@server$ iperf -s

(sul client)

 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

Più dettagli


7
+1 iperf è fantastico per la convalida delle velocità Ethernet e WIFI
kfmfe04

1
iperfè ottimo per LAN ma l'utente sta chiedendo informazioni su WAN.
IMTheNachoMan,

34

Beh, lo uso wgetper questo. Quel piccolo strumento mi dice bene quale velocità ho.

Per usarlo basta puntare a un file in Internet che è relativamente più grande in modo da poterne ottenere una migliore stima.

Per esempio

digitando: wget http://hostve.com/neobuntu/pics/Ubu1.aviinizierebbe a scaricare il file Ubu1.avi e mostrerebbe a quale velocità si sta scaricando.

inserisci qui la descrizione dell'immagine

Naturalmente ci sono diversi consigli:

  1. Mettiti alla prova con buoni server. Nel caso del mio collegamento la velocità è inferiore a 200 KB, quindi se hai una velocità maggiore, il server sarà il collo di bottiglia per te, non la tua velocità effettiva.

  2. La massima velocità che vedrai è la massima velocità che la tua connessione e quella del server possono offrire. Se la connessione è di 512 KB e il luogo in cui si sta scaricando è di 400 KB, la connessione massima sarà di 400 KB perché è il massimo per il server da cui si sta scaricando.

  3. È necessario eseguire il test almeno 5 volte per avere un controllo della velocità affidabile o almeno per un minuto o due. Questo ti aiuterà ad avere un controllo più accurato.

  4. Devi avere almeno 4 o 5 diverse fonti di test per avere una velocità più accurata. Non eseguire mai test solo dallo stesso sito poiché ciò può essere influenzato dalla distanza dell'utente, da qualsiasi problema nel server e dalle connessioni ad esso, ecc. Testare sempre da server diversi.

aria2

Questa è un'alternativa a wget. L'aspetto negativo di wgetè la mancanza di connessioni parallele. Per usare aria2 dobbiamo prima scaricarlo:

   sudo apt-get install aria2

Per usarlo è semplice:

inserisci qui la descrizione dell'immagine

Nell'immagine, -x 4 è il numero di connessioni parallele che desideriamo utilizzare. Il parametro CN nella riga successiva mostra quante connessioni parallele attive sono state autorizzate a scaricare da quel sito. In questo caso CN è 4. Ma se provassimo ad avere più connessioni otterremmo qualcosa del genere:

inserisci qui la descrizione dell'immagine

Abbiamo impostato 8 connessioni parallele ma il sito ha consentito solo un massimo di 5, come mostrato da CN: 5. Ciò potrebbe essere risolto dall'opzione -j che indica ad aria2c il numero massimo di connessioni simultanee che vogliamo (che per impostazione predefinita è 5) ma se il server ha limitato questa opzione, -j non funzionerà.


1
wget non è (ancora) in grado di eseguire un download segmentato, ovvero scaricare un singolo file utilizzando più connessioni (parallele), quindi se il tuo ISP sta limitando la velocità per 1 connessione, non otterrai risultati accurati ... sarebbe un test più preciso per usare qualche altro strumento, che può almeno usare il download segmentato (come aria2)
Mladen B.

3
Questo NON è un test di velocità, questo è solo un DOWNLOAD test di velocità! Test di velocità su Internet significa carico in basso e in alto! Seconda risposta, e tutti gli altri che menzionano speedtest-cli hanno l'approccio corretto.
Emil Borconi,

1
@EmilBorconi Hai ragione, ma nella vita reale, non stiamo facendo benchmarking delle velocità di Internet qui, questi sono solo i tuoi test di velocità attuali medi di qualsiasi utente domestico senza la necessità di siti come speedtest. Una velocità di download (che è sufficiente per chiunque cerchi di vedere se hanno un collo di bottiglia) è un test abbastanza buono. Un test di velocità down / up verificherebbe su cosa si basa l'intero ambito della tua velocità sul tuo ISP. Quindi sì, sarebbe la soluzione migliore, ma per qualsiasi scenario di test veloce, anche una semplice scommessa farebbe il trucco poiché normalmente le persone si preoccupano più della velocità di download che del caricamento.
Luis Alvarado,

1
@LuisAlvarado scusate se ho suonato maleducato, penso solo che le persone dovrebbero essere in grado di comprendere appieno ciò che stanno chiedendo / e qual è la risposta accettata. Molti dei neofiti guarderanno nei forum e assumeranno / sceglieranno / si fermeranno alla risposta accettata, e formeranno una falsa immagine nella loro. E sì, il download è più importante del caricamento a meno che tu non sia un maniaco di Facebook che pubblica selfie ogni 5 minuti, quindi inizia una lotta con il tuo ISP solo perché hai testato il download che è buono, ma hai un caricamento scadente ... Ancora una volta scusa se il mio tono era scortese, non volevo insultare ...
Emil Borconi il

1
Mi piace di wgetpiù che curlper questo perché wgetvisualizza MB/s(molto chiaro che è MByte / s), mentre curlmostra solo k(non molto ovvio che è KByte / s).
Wisbucky,

19

Poiché speedtest-cli è un'applicazione Python, è molto più facile da installare eseguendo:

pip install speedtest-cli

o:

easy_install speedtest-cli

A seconda di come Python è installato sul tuo sistema, potrebbe essere necessario essere root per fare quanto sopra.


7

Mi è capitato di apprezzare il speedometercli Ubuntu.

speedometer -r eth0

Per visualizzare un grafico in tempo reale della velocità dei dati in entrata.


questo è quello che stavo cercando da un po '! Grazie! ma non mi piace che mostri velocità in Kib e non in Kb o KB
redbeam_

3

Esegui diverse istanze di wget con il comando timeout su file di grandi dimensioni:

#!/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 &

E quindi scrivere uno script per calcolare i byte totali scaricati e dividere 5 secondi otterrai una cifra di byte / sec. Dovrebbe essere abbastanza preciso e puoi aggiungere più istanze per massimizzare la tua larghezza di banda.

Devo ancora testare lo script completo ma il comando a riga singola "timeout 5 wget url" funziona e di conseguenza ottieni un file parzialmente scaricato (se 5 secondi non sono sufficienti per completare il download).


Ciò richiederebbe l'installazione di un server ...
Braiam,

url_1,2,3,4 può essere qualsiasi cosa, come i server pubblici.
Rexis,

ad esempio, timeout 5 wget http://speedtest.netcologne.de/test_100mb.bin -O /tmp/temp5secquindi analizzare la dimensione del file e dividere per 5: expr $(stat --printf="%s" /tmp/temp5sec) / 5 / 1024in kbit / s
rubo77

3

puoi usare tespeed. si tratta di un test di velocità della rete Terminal che utilizza server da Speedtest.net. Utilizza il server di test più vicino ma può anche usarne uno specificato manualmente dall'utente.

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

inserisci qui la descrizione dell'immagine

per maggiori informazioni usa:

 ./tespeed.py  -h

fornirà più opzioni per il test di velocità.


Nota: richiedelxml
Matt

2

un semplice one-liner che verifica il tempo necessario per scaricare 100 MB (funziona /bin/shanche su ):

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

spiegazione:

  1. memorizza il timestamp in $ t
  2. scarica 100mb ma non memorizzare nulla
  3. calcolare 8 * 100mb / $t

Questo ha funzionato alla grande mentre sto testando da un rootFS di sola lettura wgetsenza stato e non stavo aumentando la velocità.
Josh Habdas,

2

Semplice script bash basato sulla risposta @rexis. È possibile inserire i propri collegamenti per i test in linksarray o leggerli dal file

#!/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

uno meno - che dire di quando uso un'altra lingua come inglese? vedi: grep :) parte
ceph3us

1

Per ottenere comodamente la mia velocità di download in bit al secondo, nel file $ HOME / .bash_aliases definisco quanto segue:

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

dove:

--output-document=/dev/null scarta efficacemente l'output di wget

--report-speed=bits visualizza la media della velocità di download di wget in bit al secondo (bps) anziché i byte al secondo predefiniti (Bps)



0

Volevo qualcosa di più avanzato di speedtest.net e varie soluzioni che si basano esclusivamente su un singolo sito Web. Quindi ho fatto la cosa che faccio normalmente e ho scritto la mia soluzione:

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

Dall'elenco delle funzionalità:

  • Test di velocità SSH / SFTP (porta 22).
  • Porte TCP comuni 80, 443 e 8080, nonché test di velocità delle porte TCP casuali utilizzando un server TCP / IP personalizzato che supporta velocità fino a 2,2 Gbps in giù e 780 Mbps in su.
  • Test di latenza di rete abbastanza semplici.
  • Spin up goccioline Digital Ocean e test di velocità SSH / SFTP e varie porte TCP.
  • Speedtest.net e test di velocità personalizzati OoklaServer. Produce risultati simili ai test di connessione singola su single.speedtest.net.
  • Uscita JSON pura in modalità silenziosa (-s).

È una soluzione più generica che può essere utilizzata da altre applicazioni. Sono riuscito a individuare un problema di rete ISP che ha comportato il raddoppio della mia velocità a valle SFTP, che ha portato a una maggiore felicità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.