Как использовать 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
столбец - это данные, которые вы ищете.