Как использовать tshark или tcpdump для вычисления переданных байтов

Я использую эту команду с tshark:

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

По сути, это анализирует pcap только для соединений из исходного IP-адреса и ищет общую длину в байтах от каждого пакета. Я получаю вывод, как это:

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

Что мне нужно сделать, это взять числа из общей длины и сложить их, чтобы я мог получить представление о том, сколько данных было передано по проводам во временном интервале pcap с одного IP.

Есть ли команда, которую я могу добавить в конце той, которую я использую для этого? Или есть способ, которым я могу направить на стандартный вывод, а затем передать его в программу, которая может проанализировать и рассчитать, что мне нужно? Кто-нибудь знает подобную команду с tcpdump, которая может это сделать?

2 ответа

Решение

awk можно суммировать столбец чисел. Нечто подобное должно сработать.

Предполагая, что вывод вашего tshark находится в foo.txt:

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

Вы также можете передать вывод "grep" напрямую awkи это будет работать аналогичным образом.

Вы можете положиться исключительно на tshark Для этого с помощью опции статистики в калькуляторе статистики ввода-вывода:

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

Это покажет доску, где SUM столбец - это данные, которые вы ищете.

Другие вопросы по тегам