«tcpdump» для захвата последних пакетов

«tcpdump» для захвата последних пакетов

Я отслеживаю определенный порт, поскольку мое приложение использует этот порт. Кажется, что соединение обрывается в случайные моменты времени. Я хочу узнать, какие последние пакеты проходят перед обрывом соединения: Я использовал эту строку

 sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

но чтобы это сработало, мне нужно запустить другой терминал и выполнить команду

sudo killall tcpdump

есть ли лучший подход? EDIT1: важно захватывать только последние пакеты, так как я не хочу, чтобы файл раздувался, так как трафика достаточно, чтобы быстро заполнить дисковое пространство.

решение1

Хорошо, я думаю, что я нашелрешение:

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

Это заменит ваш выходной файл каждые 10 секунд на новый файл с именемtcpamir-<unixtimestamp>.txt

Вы также можете изменить выходной файл, чтобы он перезаписывал себя каждый день, если вас беспокоит размер файла в ожидании. Для получения дополнительной информации читайте man 3 strftime.

Я думаю о чем-то вроде

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

Где %Rуказано время в 24-часовом формате (например, 12:40).

Прочитайте соответствующие выходные файлы с помощью

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

Второе решение:

Разделите его на несколько команд и сохраните как скрипт/функцию:

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt

решение2

Если вы хотите только записать весь захваченный трафик, вам нужно просто добавить -w к строке, удалив'| хвост >> tcpamir.txt'

# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap

Если вы хотите проанализировать захват в Wireshark, расширение должно быть .cap. Когда вы убедитесь, что захват выполнен, вы можете завершить его с помощьюctrl + c

ПРИМЕЧАНИЕ: -w [имя_файла.cap] для записи захвата в файл

Связанный контент