You are currently viewing Linux: Testar a velocidade de internet no terminal

Linux: Testar a velocidade de internet no terminal

Muitos dos utilizadores de servidores Linux, apenas estão limitados à interacção com a máquina através da linha de comandos, vulgo terminal. No artigo de hoje, vamos ensinar a medir a velocidade da sua conexão à internet através do terminal.

Para este exemplo, irei usar um servidor que tenho em casa, ligado via ethernet a uma porta gigabit. A única forma que tenho para comunicar com o servidor é apenas a  linha de comandos.

Ora, vamos ver como ter a velocidade de internet por linha de comandos com o speedtest.

Vamos primeiro fazer o download de um script disponível no GitHub para fazer testes em linha de comandos. Utilizamos o wget.

Screen Shot 2016-01-28 at 11.55.53.png

Um reparo. Em vez de utilizarem o wget e uma vez que estamos a falar de um script em python (.py), podíamos utilizar o pip ou o easy_install.

De seguida, e como é um script, temos de dar permissões de execução ao script.

chmod +x speedtest-cli

Como próximo e último passo, corremos o script.

Screen Shot 2016-01-28 at 11.59.11

E voilá. Aí está o resultado. De uma velocidade de 24Mbps contratada, tenho 4.08Mbps.

Eu como gosto de manter as coisas um pouco organizadas, estou a guardar este histórico de velocidades num ficheiro. Podem fazê-lo de duas formas. Editar o script para redirecionar o output para um ficheiro ou utilizar um redirecionamento do output do processo (STDOUT).

Segui a segunda opção, pelo simples facto de não querer estar a ler código que não escrevi. Utilizei os caracteres ‘>>’  para redirecionar o output e acrescentar ao conteúdo existente do ficheiro de destino.

Screen Shot 2016-01-28 at 12.08.49

Desta vez ainda foi pior. Apanhei uma velocidade de 3.24Mbps.

Além da velocidade durante o dia, tenho outro problema. A velocidade durante a noite. Isto deve-se ao facto da Guarda ter temperaturas muito baixas durante a noite, e com elas, o cobre perder propriedades de transmissão.

O próximo passo, é fazer um script que corra de duas em duas horas e guarde a informação de quando correu no mesmo ficheiro.

O script feito é um script simples. Criei um ficheiro chamado testevelocidade.sh e com o nano inseri os seguintes comandos.

Screen Shot 2016-01-28 at 12.47.12.png

Resumidamente, criei uma variável (data), que guarda o valor da data actual e na linha seguinte é adicionado no ficheiro velocidades.txt. É uma forma de saber quando tenho uma nova entrada no ficheiro e quando foi feita. De seguida corri o script como expliquei anteriormente, e mostro os últimos resultados no terminal.

Depois de criado, é preciso dar permissões de execução ao script.

chmod +x testevelocidade.sh

E podemos correr.

Screen Shot 2016-01-28 at 12.34.49.png

NOTA: Agora não me deu resultados muito maus 🙂

Como próximo passo, e para correr de duas em duas horas, vamos utilizar o crontab.

Primeiro, vamos editar o crontab do utilizador.

NOTA: Se lhe faz confusão a utilização do crontab, é aconselhado que reveja o serviço.

crontab -e

De seguida adicionamos a entrada para correr de duas em duas horas o script criado.

Screen Shot 2016-01-28 at 12.38.42.png

O resultado de crontab -l deverá ser o seguinte.

Screen Shot 2016-01-28 at 12.39.03.png

Se tudo correu bem, têm o script a correr de duas em duas horas. Para testar, em vez de duas em duas horas, podem alterar o job para correr de dois em dois minutos. Depois disso utilizam o comando wc para contar as linhas do ficheiro de velocidades.

wc -l velocidades.txt

Tambem, quando o job corre, o utilizador responsável, recebe um mail a indicar que correu em /var/mail/pi.

Screen Shot 2016-01-28 at 12.53.31

O desafio que deixo é limpar o ficheiro de velocidades de dois em dois dias por exemplo.

E já têm o vosso histórico de velocidade de internet. Alguma duvida, deixem nos comentários.

António Sousa

António Sousa, técnico de redes e sistemas informáticos e fundador do Tech em Português! Sou um amante das novas tecnologias e um aventureiro dessa grande "auto-estrada" que é a internet!