Tcpdump остановится без изящества

Я ищу надежное решение для захвата пакетов для автоматизации тестирования.

Прямо сейчас tcpdump был использован со следующей командой.

sudo tcpdump -i ens160  -w filename.pcap -G 60 -W 1 

Я останавливаю tcpdump с:

kill -s SIGINT <pid>

1 из 20 раз tcpdump не может корректно завершиться, и файл pcap будет поврежден.

Есть ли способ убедиться, что tcpdump правильно выйдет?

0 ответов

Есть два способа избежать получения усеченного файла дампа:

  1. Как предложил Дуг Смитис, используйте сигнал завершения (SIGTERM) вместо SIGINT убить tcpdump процесс:

    kill <pid>
    
  2. Расскажи 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.
Другие вопросы по тегам