Tcpdump остановится без изящества
Я ищу надежное решение для захвата пакетов для автоматизации тестирования.
Прямо сейчас tcpdump был использован со следующей командой.
sudo tcpdump -i ens160 -w filename.pcap -G 60 -W 1
Я останавливаю tcpdump с:
kill -s SIGINT <pid>
1 из 20 раз tcpdump не может корректно завершиться, и файл pcap будет поврежден.
Есть ли способ убедиться, что tcpdump правильно выйдет?
0 ответов
Есть два способа избежать получения усеченного файла дампа:
Как предложил Дуг Смитис, используйте сигнал завершения (
SIGTERM
) вместоSIGINT
убитьtcpdump
процесс:kill <pid>
Расскажи
tcpdump
записывать пакет прямо в файл по мере сохранения каждого пакета (опция-U
). Таким образом, даже при использовании SIGINT файл не будет усечен. От человека tcpdump:
-U --packet-buffered If the -w option is not specified, make the printed packet output ``packet-buffered''; i.e., as the description of the contents of each packet is printed, it will be written to the standard output, rather than, when not writing to a ter‐ minal, being written only when the output buffer fills. If the -w option is specified, make the saved raw packet output ``packet-buffered''; i.e., as each packet is saved, it will be written to the output file, rather than being written only when the output buffer fills. The -U flag will not be supported if tcpdump was built with an older version of libpcap that lacks the pcap_dump_flush() function.