Выход tshark piping приводит к счетчику пакетов

Когда я пытаюсь направить вывод tshark на что-либо, я больше не вижу трафик. Tshark просто показывает счетчик пакетов. Как я могу предотвратить это?

 sudo tshark -i enp60s0 -f "tcp" -T fields -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -e tcp.checksum -e tcp.options -E header=y | column -t

person Kryptos    schedule 27.07.2017    source источник


Ответы (2)


Контекст

Для контекста это команда и вывод, о которых вы говорите:

$ sudo tshark -i enp60s0 -f "tcp" -T fields -e ip.src -e ip.dst -e tcp.srcport \
    -e tcp.dstport -e tcp.checksum -e tcp.options -E header=y | column -t
Capturing on 'Eth: enp60s0'
45

Tshark будет отправлять контрольную информацию, например, где он захватывает и количество пакетов, на стандартный вывод вместо стандартного вывода. Если вы не хотите видеть эту управляющую информацию, отправьте stderr на dev null:

$ sudo tshark ... 2>/dev/null | column -t

Метод

Мы также можем непрерывно генерировать новый захват каждую секунду, который затем можно прочитать с помощью tshark (см. ">справочную страницу для получения полной информации). Это похоже на решение @ChristopherMaynard, но вам не нужно ждать завершения захвата. Сохранение (-w) с помощью -b duration:1 будет сохранять новый снимок каждую секунду:

#!/usr/bin/env bash
sudo tshark -w temp.pcap -b duration:1 2>/dev/null &

i=0
while true
  do if [ "$i" != "$(ls -1A . | wc -l)" ]; then 
    newfile="$(ls -t | head -n1)"
    sudo tshark -r "$newfile" 2>/dev/null | column -t
  fi  
  sleep 0.1 
done

Проверка

Запустив это, мы получим вывод, как показано ниже. Обратите внимание, что мы считываем новые захваты пакетов, поэтому tshark добавляет числа, начиная с 1, для каждого нового считываемого захвата.

1   0.000000  192.168.2.1    →  192.168.2.242    DNS      134  Standard     query  response           0xfd75             No                            such                         name               PTR                                     1.2.168.192.in-addr.arpa      SOA                localhost               6c:96:cf:d8:7f:e7  ←  78:8a:20:d9:f9:11
2   0.000412  192.168.2.242  →  192.168.2.1      DNS      87   Standard     query  0x2a9b             PTR                249.249.16.104.in-addr.arpa   78:8a:20:0d:05:e7            ←                  6c:96:cf:d8:7f:e7
3   0.023726  192.168.2.1    →  192.168.2.242    DNS      149  Standard     query  response           0x2a9b             No                            such                         name               PTR                                     249.249.16.104.in-addr.arpa   SOA                cruz.ns.cloudflare.com  6c:96:cf:d8:7f:e7  ←  78:8a:20:d9:f9:11
4   0.024091  192.168.2.242  →  192.168.2.1      DNS      85   Standard     query  0x2f71             PTR                40.2.168.192.in-addr.arpa     78:8a:20:0d:05:e7            ←                  6c:96:cf:d8:7f:e7
1   1.026460  192.168.2.242  →  192.168.2.255    UDP      86   57621        →      57621              Len=44             ff:ff:ff:ff:ff:ff             ←                            6c:96:cf:d8:7f:e7
2   1.048071  192.168.2.1    →  192.168.2.242    DNS      135  Standard     query  response           0x2f71             No                            such                         name               PTR                                     40.2.168.192.in-addr.arpa     SOA                localhost               6c:96:cf:d8:7f:e7  ←  78:8a:20:d9:f9:11
3   1.048555  192.168.2.242  →  192.168.2.1      DNS      87   Standard     query  0xe77d             PTR                25.206.252.198.in-addr.arpa   78:8a:20:0d:05:e7            ←                  6c:96:cf:d8:7f:e7
4   1.125073  192.168.2.1    →  192.168.2.242    DNS      118  Standard     query  response           0xe77d             PTR                           25.206.252.198.in-addr.arpa  PTR                stackoverflow.com                       6c:96:cf:d8:7f:e7             ←                  78:8a:20:d9:f9:11
person Ross Jacobs    schedule 16.06.2020

Команде column необходимо прочитать все входные данные, чтобы решить, насколько широким должен быть каждый столбец, поэтому вы не можете использовать column в этом контексте. (Вы можете проверить это, выполнив команду tshark, а затем в другом месте выполнив команду killall tshark, и тогда вы увидите все свои выходные данные.

Вместо этого, я думаю, вам придется перенаправить свой вывод в файл, а затем, когда вы закончите сеанс tshark захвата, вы сможете cat file | column -t, если хотите. Если вы хотите увидеть вывод на экране, а также перенаправить его в файл для последующей обработки, вы можете передать его tee и предоставить tee имя файла для записи. Например, tshark [options] | tee file, но вывод, который вы видите, не будет так хорошо отформатирован, пока вы позже не сделаете cat file | column -t.

person Christopher Maynard    schedule 09.08.2017