Como obter as velocidades atuais de upload e download no terminal?

10

Eu quero que o terminal produza as velocidades atuais de upload e download da minha conexão de rede. Eu não quero monitorar as velocidades em tempo real. Eu só quero um valor "estático" para poder escrevê-lo em um arquivo.

Como faço para isso?

    
por Painbrain 19.04.2014 / 14:52

2 respostas

12

Curiosamente, a maneira mais fácil parece estar olhando para /proc/net/dev . Eu escrevi o seguinte para comparar esse arquivo duas vezes (com um segundo atraso) e, em seguida, subtrair os valores totais de bytes. Nesse caso, em1 é o adaptador de rede, então mude isso para o que você precisa olhar.

awk '/em1/ {i++; rx[i]=; tx[i]=}; END{print rx[2]-rx[1] " " tx[2]-tx[1]}' \
 <(cat /proc/net/dev; sleep 1; cat /proc/net/dev)

A saída é dois números. Bytes recebidos por segundo seguidos por bytes enviados por segundo.

    
por Oli 19.04.2014 / 15:19
11

Aqui está uma variação da excelente solução de Oli:

awk '{if(l1){print -l1,-l2} else{l1=; l2=;}}' \
  <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)

Ele imprimirá o mesmo resultado que a abordagem de Oli:

$ awk '{if(l1){print -l1,-l2} else{l1=; l2=;}}' \
>   <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
401500 30286

O primeiro valor é a taxa de download em bytes por segundo e o segundo é a taxa de upload. Você pode obter um formato mais humano com:

$ awk '{if(l1){print (-l1)/1024"kB/s",(-l2)/1024"kB/s"} else{l1=; l2=;}}' \
    <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
398.771kB/s 82.8066kB/s
    
por terdon 19.04.2014 / 15:41