Como verificar a velocidade da Internet via terminal?

468

Em vez de ir a sites como speedtest.net , quero verificar minha velocidade atual da Internet a partir do terminal no Ubuntu. Como eu posso fazer isso?

kernel_panic
fonte
4
Os resultados que estou obtendo com o speedtest-cli estão muito abaixo do que eu recebo do speedtest.net speedtest-cli Download 18,27 Mbits / s Upload 3,43 Mbits / s speedtest.net Download 59,38 Mbits / s Upload 12,14 Mbits / s Não consigo considere speedtest-cli como um teste válido da velocidade da rede.
2
@ user375058: speedtest-cliUtiliza os mesmos servidores (etc.) que o SpeedTest.net. Você deve considerar speedtest-clie www.speedtest.netequivalente, apenas com um front-end diferente. Eu ficaria surpreso se você obtiver resultados significativamente diferentes de forma consistente se ambos usarem o mesmo servidor. Se eles não estiverem usando o mesmo servidor, você não terá base para comparação. Por fim, meus resultados para os dois utilitários variam de 2 a 4 de execução para execução. Sugiro que você teste 2-4 servidores, execute 3-4 execuções para cada servidor e compare as ferramentas.
Jvriesem #
@ user375058: Na verdade, acabei de fazer o que sugeri. Veja o link no meu comentário abaixo para os meus resultados.
Jvriesem
1
sudo apt install speedtest-cli
ColdCold

Respostas:

753

Eu recomendo a ferramenta speedtest-cli para isso. Eu criei uma postagem no blog ( Medir a velocidade da conexão com a Internet a partir da linha de comando do Linux ) que detalha o download, a instalação e o uso.

A versão curta é esta: (nenhuma raiz é necessária)

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

Resultado:

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

Atualização em 2018:

Usando pip install --user speedtest-clivocê obtém uma versão provavelmente mais nova que a disponível nos repositórios da sua distribuição.

Atualização em 2016:

speedtest-cliestá nos repositórios do Ubuntu agora. Para o Ubuntu 16.04 (Xenial) e posterior, use:

sudo apt install speedtest-cli
speedtest-cli
mweisel
fonte
2
Isso não parece funcionar corretamente. Tenho BT infinito 50bBit para baixo e 20Mbit para cima. Mas os resultados aparecem como 0,53Mbit para baixo e 0,2Mbit para cima. Hã? Colocação decimal incorreta? usando wget eu recebo 4.27M / s (34Mbit) (algum outro servidor)?
Piotr Kula
34
Como já foi afirmado aqui : Como o speedtest-cli é um aplicativo python, é muito mais fácil instalar fazendo: pip install speedtest-cli ou: easy_install speedtest-cli Dependendo de como o Python estiver instalado no seu sistema, você pode precisar ser root para fazer o acima.
CrandellWS
1
Confirmando que speedtest-cli está quebrado . Não mostra velocidades acima de 1Mbps. Não transfere nenhuma informação ao reivindicar fazê-lo.
int_ua
5
Esta deve realmente ser a resposta aceita ... speedtest-cli está funcionando bem para mim; think @int_ua estava com problemas de compatibilidade ou com problemas na Internet.
peelman
2
Essa deve ser a resposta certa. Teste de velocidade significa baixar e fazer o upload. A primeira resposta APENAS mede a velocidade do download, que NÃO é uma imagem completa da velocidade da sua conexão à Internet. Especialmente se você estiver hospedando algo nessa máquina!
Emil Borconi
92

tente isso na linha de comando

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

tente isso também

sourceforge.net/projects/tespeed/

entendi acima link

Tachyons
fonte
2
Você poderia explicar o que /dev/nullsignifica?
noz sobre natty
12
É ficheiro speacial que simplesmente os dados de exclusão por escrito a ele,
Tachyons
2
Para mim no Ubuntu 14.10 com python 2.7.8, o comando wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zipfunciona muito melhor do que o uso speedtset-cliposterior parece congelar e ^ C falha ao interromper o comando. Com wget não tenho problemas de corte a shrot download com ^ C
Willoczy
1
@mlissner, parece primeira velocidade em megabits, a segunda em megabytes ..
vp_arth
1
@mlissner 1,5 x 8 = 12. um é kbps e outro é KBps :-)
Tachyons
55

Se você não puder se incomodar em instalar o iperf, poderá preceder qualquer comando que troque uma quantidade conhecida de dados com o timecomando e faça uma soma.

O iperf é simples e fácil de usar.

Requer um cliente e servidor.

(no servidor)

 user@server$ iperf -s

(no cliente)

 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

Mais detalhes

One Zero
fonte
7
+1 iperf é fantástico para validar Ethernet e Wi-Fi velocidades
kfmfe04
1
iperfé ótimo para LAN, mas o usuário está perguntando sobre a WAN.
IMTheNachoMan
34

Bem, eu uso wgetpara isso. Essa pequena ferramenta me diz muito bem qual velocidade eu tenho.

Para usá-lo, basta apontar para um arquivo na Internet que seja relativamente maior, para que você possa obter uma estimativa melhor dele.

Por exemplo

digitando: wget http://hostve.com/neobuntu/pics/Ubu1.avicomeçaria a baixar o arquivo Ubu1.avi e mostraria a que velocidade está sendo baixado.

insira a descrição da imagem aqui

Claro que existem várias recomendações:

  1. Teste a velocidade com bons servidores. No caso do meu link, a velocidade é inferior a 200 KB; portanto, se você tiver uma velocidade maior, o servidor será o gargalo para você, não a sua velocidade real.

  2. A velocidade mais alta que você verá é a velocidade máxima que sua conexão e a conexão do servidor podem oferecer. Se sua conexão for de 512 KB e o local para o download for de 400 KB, sua conexão máxima será de 400 KB, porque é o máximo para o servidor do qual você está baixando.

  3. Você precisa fazer o teste pelo menos 5 vezes para ter uma verificação de velocidade confiável ou pelo menos por um minuto ou dois. Isso ajudará você a ter uma verificação mais precisa.

  4. Você precisa ter pelo menos 4 ou 5 fontes de teste diferentes para ter uma velocidade mais precisa. Nunca teste apenas no mesmo site, pois isso pode ser afetado pela sua distância, por qualquer problema no servidor e pelas conexões com ele, etc. Sempre teste em servidores diferentes.

ARIA2

Esta é uma alternativa para wget. A desvantagem wgeté a falta de conexões paralelas. Para usar o aria2, primeiro precisamos baixá-lo:

   sudo apt-get install aria2

Para usá-lo é simples:

insira a descrição da imagem aqui

Na imagem, o -x 4 é quantas conexões paralelas queremos usar. O parâmetro CN na próxima linha mostra quantas conexões paralelas ativas foram permitidas para download a partir desse site. Nesse caso, CN é 4. Mas, se tentássemos ter mais conexões, obteríamos algo assim:

insira a descrição da imagem aqui

Definimos 8 conexões paralelas, mas o site só permitiu um máximo de 5, como mostra CN: 5. Isso pode ser resolvido pela opção -j, que informa ao aria2c o máximo de conexões simultâneas que queremos (que por padrão é 5), mas se o servidor limitou isso, -j não funcionará.

Luis Alvarado
fonte
1
O wget ainda não é capaz de fazer um download segmentado, ou seja, baixar um único arquivo usando várias conexões (paralelas); portanto, se o seu ISP estiver limitando a velocidade por conexão, você não obterá resultados precisos ... seria um teste mais preciso usar alguma outra ferramenta, que pode, pelo menos uso segmentado download (como aria2)
Mladen B.
3
Este NÃO é um teste de velocidade, apenas um teste de velocidade de DOWNLOAD! Teste de velocidade da Internet significa carregar e carregar! A segunda resposta e todos os outros que mencionam o speedtest-cli têm a abordagem correta.
Emil Borconi
1
@EmilBorconi Você está correto, mas na vida real, não estamos fazendo benchmarking das velocidades da Internet aqui, são apenas os testes de velocidade atuais médios de qualquer usuário doméstico sem a necessidade de sites como o speedtest. Uma velocidade de download (que é suficiente para quem tenta ver se está tendo um gargalo) é um teste suficientemente bom. Um teste completo de velocidade para baixo / para cima verificaria qual o escopo completo da sua velocidade com base no seu ISP. Então, sim, essa seria a melhor solução, mas para qualquer cenário de teste rápido, mesmo um simples wget faria o truque, pois normalmente as pessoas se preocupam mais com a velocidade do download do que com o upload.
Luis Alvarado
1
@LuisAlvarado desculpe se eu pareceu rude, só acho que as pessoas devem ser capazes de entender completamente o que estão pedindo / e qual é a resposta aceita. Muitos novatos vão olhar para os fóruns e eles assumirão / escolherão / pararão na resposta aceita e formarão uma imagem falsa. E sim, o download é mais importante do que o upload, a menos que você seja um maníaco do Facebook que publica selfies a cada 5 minutos, depois comece uma briga com seu ISP apenas porque você testou o download, o que é bom, mas você tem um upload de baixa qualidade ... Mais uma vez, desculpe se o meu tom era rude, não queria insultar ...
Emil Borconi
1
Eu gosto wgetmais do que curlisso porque wgetexibe MB/s(muito claro que é MBytes / s), enquanto curlapenas exibe k(não é muito óbvio que seja KBytes / s).
wisbucky 18/09
19

Como o speedtest-cli é um aplicativo python, é muito mais fácil instalar instalando:

pip install speedtest-cli

ou:

easy_install speedtest-cli

Dependendo de como o Python estiver instalado no seu sistema, talvez você precise ser root para fazer o acima.

BobC
fonte
7

Eu gosto do speedometercli do Ubuntu.

speedometer -r eth0

Para assistir a um gráfico ao vivo das velocidades de dados recebidos.

6ft Dan
fonte
isso é realmente o que eu estava procurando por um tempo! obrigado! mas eu não gosto que ela mostra velocidades Kib e não Kb ou KB
redbeam_
3

Execute várias instâncias do wget com o comando timeout em arquivos grandes:

#!/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, em seguida, escreva um script para calcular o total de bytes baixados e divida 5 segundos. Você obterá uma figura em bytes / s. Deve ser bem preciso e você pode adicionar mais instâncias para maximizar sua largura de banda.

Ainda tenho que testar o script completo, mas o comando de linha única "timeout 5 wget url" funciona e, como resultado, você obtém um arquivo parcialmente baixado (se 5 segundos não forem suficientes para concluir o download).

rexis
fonte
Isso exigiria de algum servidor configurado ...
Braiam
url_1,2,3,4 pode ser qualquer coisa, como servidores públicos.
Rexis
por exemplo timeout 5 wget http://speedtest.netcologne.de/test_100mb.bin -O /tmp/temp5sec, em seguida, analisar o tamanho do arquivo e Devide por 5: expr $(stat --printf="%s" /tmp/temp5sec) / 5 / 1024em kbit / s
rubo77
3

você pode usar tespeed. é um teste de velocidade de rede do Terminal que usa servidores de Speedtest.net. Ele usa o servidor de teste mais próximo, mas também pode usar um especificado manualmente pelo usuário.

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

insira a descrição da imagem aqui

para mais informações, use:

 ./tespeed.py  -h

fornecerá mais opções para teste de velocidade.

pl_rock
fonte
Nota: requerlxml
Matt
2

um one-liner simples que testa quanto tempo leva para baixar 100 MB (funciona /bin/shtambém):

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

explicação:

  1. armazene o carimbo de data e hora em $ t
  2. baixar 100mb mas não guarde nada
  3. calcular 8 * 100mb / $t
rubo77
fonte
Isso funcionou muito bem, pois estou testando a partir de um rootFS somente leitura sem estado e wgetnão estava produzindo a velocidade.
18118 Josh Habdas
2

Script bash simples baseado na resposta @rexis. Você pode colocar seus próprios links para teste em linksarray ou lê-los no arquivo

#!/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
Lado escuro
fonte
um menos - e quando eu uso outro idioma como o inglês? Veja: grep :) part
ceph3us 14/03
1

Para obter convenientemente minha velocidade de download em bits por segundo, defino o seguinte no meu arquivo $ HOME / .bash_aliases:

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

Onde:

--output-document=/dev/null descarta efetivamente a saída wget

--report-speed=bits exibe a velocidade média do download do wget em bits por segundo (bps), em vez dos bytes por segundo padrão (bps)

trellem
fonte
0

Eu queria algo mais avançado que o speedtest.net e várias soluções que dependessem apenas de um único site. Então, fiz o que normalmente faço e escrevi minha própria solução:

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

Na lista de recursos:

  • Teste de velocidade SSH / SFTP (porta 22).
  • Portas TCP comuns 80, 443 e 8080, bem como testes aleatórios de velocidade de portas TCP, usando um servidor TCP / IP personalizado que suporta velocidades de até 2,2 Gbps de down e 780 Mbps de up.
  • Teste de latência de rede bastante básico.
  • Gire as gotas do Digital Ocean e teste de velocidade SSH / SFTP e várias portas TCP.
  • Speedtest.net e teste de velocidade personalizado OoklaServer. Produz resultados semelhantes aos testes de conexão única em single.speedtest.net.
  • Saída JSON pura no modo silencioso (-s).

É uma solução mais genérica que pode ser consumida por outros aplicativos. Consegui identificar um problema de rede do provedor que resultou na duplicação da velocidade do downstream do SFTP, o que resultou em maior felicidade.

CubicleSoft
fonte