Eu quero exibir a utilização atual da rede (uso de largura de banda) de uma interface de uma caixa Debian em um site. Não deveria ser muito elaborado ou preciso, apenas um número simples como "52 Mbit / s".
Os monitores típicos de largura de banda de rede, como por exemplo, iftopnão me permitem extrair esse valor.
Como posso recuperá-lo da melhor maneira?
Por exemplo, acho que posso analisar a /proc/net/devcada poucos minutos. Não tenho certeza se esta é realmente a melhor maneira de fazer isso.
A melhor maneira de fazer isso simplesmente é provavelmente analisar /proc/net/dev(lembre-se de que /procnão é portátil). Aqui está um bashscript que eu montei rapidamente que deve ser capaz de calculá-lo:
Lembre-se de que sleepnão considera a quantidade de tempo necessária para executar as operações no loop while, portanto, isso é (levemente) impreciso. Na minha mina de cobre de 600 mhz, o loop leva 0,011 segundos - uma imprecisão insignificante para a maioria dos propósitos. Lembre-se também ao usar as saídas de kilobyte / megabit (comentadas), o bash entende apenas a aritmética inteira.
Eu acho que essa deve ser a resposta escolhida. Todas as outras soluções se baseiam, nos bastidores, na análise /proc/net/dev, sem realmente entender o que e como essa mágica acontece.
Eran 27/04
Esta solução funcionou para mim em um roteador / busybox.
Cloneman 14/09/16
Use date +%s.%Npara obter o registro de data e hora do unix para cada iteração e divida a diferença de bytes pela diferença de registro de data e hora. Você evita que o problema das iterações de loop seja maior que 1s.
Arnavion 6/08/19
3
Existem monitores de tráfego de rede como o vnstat,
que mantém registros mensais do seu tráfego, ou slurm, que obtém seus valores diretamente daqueles armazenados no kernel. Está disponível na maioria dos repositórios de distribuição.
Você pode explicar isso um pouco? Exatamente qual deve ser o parâmetro? Qual é o significado de 125? Por favor, não responda nos comentários; edite sua resposta para torná-la mais clara e completa.
/proc/net/dev
, sem realmente entender o que e como essa mágica acontece.date +%s.%N
para obter o registro de data e hora do unix para cada iteração e divida a diferença de bytes pela diferença de registro de data e hora. Você evita que o problema das iterações de loop seja maior que 1s.Existem monitores de tráfego de rede como o vnstat, que mantém registros mensais do seu tráfego, ou slurm, que obtém seus valores diretamente daqueles armazenados no kernel. Está disponível na maioria dos repositórios de distribuição.
Aqui está o que vejo quando executo
slurm -i ra0
:fonte
Aqui está um script shell muito simples para calcular isso:
basta iniciar o script passando o nome da interface, por exemplo.
./shtraf eth1
fonte
125
? Por favor, não responda nos comentários; edite sua resposta para torná-la mais clara e completa.