Como usar tshark ou tcpdump para calcular bytes transmitidos

1

Estou usando este comando com tshark:

tshark -r pcapfile "tcp and ip.src==192.168.1.1" -T text -V -x | grep 'Total Length'

Isso essencialmente analisa o pcap apenas para conexões do ip de origem e procura o comprimento total em bytes de cada pacote. Eu recebo uma saída assim:

Total Length: 125 
Total Length: 210 
Total Length: 40 
Total Length: 125
> etc, etc....

O que eu preciso fazer é pegar os números do Comprimento Total e adicioná-los para que eu possa ter uma idéia de quantos dados foram passados através do fio no período de tempo do pcap de um único IP.

Existe um comando que posso adicionar no final do que estou usando para fazer isso? Ou existe uma maneira que eu possa direcionar para o stdout e depois canalizar isso para um programa que possa analisar e calcular o que eu estou procurando? Alguém sabe de um comando similar com o tcpdump que pode fazer isso?

    
por user53029 29.01.2015 / 22:01

2 respostas

2

awk pode somar uma coluna de números. Algo como isso deve fazer o truque.

Supondo que a saída do seu tshark esteja em foo.txt :

$ cat foo.txt | awk '{ sum += $3 } END { print sum }'

Você também pode enviar a saída "grep" diretamente para awk e ela funcionaria de maneira semelhante.

    
por 29.01.2015 / 22:06
2

Você pode confiar apenas no tshark para fazer isso, usando a opção de estatísticas com a calculadora de estatísticas do IO:

tshark -r pcapfile -z io,stat,0,"SUM(frame.len)frame.len && ip.src == 192.168.1.1 && ip.proto == 6"

Isso mostrará uma placa na qual a coluna SUM é o dado que você está procurando.

    
por 30.01.2015 / 16:14