Como posso monitorar o tráfego de rede total transferido em uma determinada interface

2

Eu preciso monitorar a quantidade de tráfego que passou por uma determinada interface (dongle de banda larga móvel), para que eu seja informado quando o total atinge (ou se aproxima) um determinado valor.

Eu tenho banda larga móvel praticamente livre até um limite não muito generoso, e gostaria de começar um script toda vez que eu quiser usar o dongle, e ele pode me avisar quando estiver perto do meu limite, ou me dizer o total quando eu parei o script.

Tudo o que preciso de ajuda agora é usar o comando certo para registrar a transferência total em valores legíveis, ou seja, tão simples quanto "Você transferiu 12.8Mb desde o início do monitoramento". Eu não me importo com velocidade, utilização ou qualquer coisa, exceto o total cumulativo.

Uma vez que eu tenha uma maneira de calcular a transferência total, posso fazer com que alguns comandos ipfw sejam jogados com alegria para fazer o firewall da interface e impedir a transferência posterior até que eu diga isso.

Estou usando o Mac OS X 10.7, mas quero usar comandos de terminal padrão em um script bash (netstat, tcpdump, o que estiver pré-instalado) e não usar uma ferramenta baixada (mesmo que funcione perfeitamente - eu preciso disso um script para que eu possa colocar minha própria lógica em torno dele como eu quero).

    
por stuffe 22.02.2012 / 22:54

1 resposta

1

Você pode usar o filtro de pacotes (PF) para isso, que faz parte do OSX. Primeiro, crie uma regra que rotule todo o tráfego na interface ( en1 neste exemplo - substitua por sua interface real):

echo "pass on en1 label \"traffic-en1\"" | sudo pfctl -f-
sudo pfctl -E # enable PF

Agora o tráfego está sendo contado e você pode visualizar os contadores com sudo pfctl -sl :

traffic-en1 4701 69 13029 40 6292 29 6737

Sinta-se à vontade para convertê-los em uma formatação mais humana:

sudo pfctl -sl | awk '$1="traffic-en1" { printf "KBytes total: %d (in: %d, out: %d)\n", $4/1024, $6/1024, $8/1024 }'

Qual deve ser algo como KBytes total: 192 (in: 95, out: 97) .

Você pode redefinir o contador com sudo pfctl -z .

Nota: o OS X pode reclamar sobre "Nenhum suporte ao ALTQ no kernel, funções relacionadas ao ALTQ desativadas" ao invocar o pfctl - isto é perfeitamente normal e seguro para ignorar.

Nota 2: Não é recomendado jogar com as configurações de firewall remotamente, mas no pior dos casos, pfctl -d desativará a coisa toda (se você se bloqueou de alguma forma).

    
por 22.02.2012 / 23:51