имя файла tcpdump с параметрами -C и -W

#linux #tcpdump

#linux #tcpdump

Вопрос:

Я пытаюсь захватить tcpdump в Linux, и я использовал опцию -C и -W , чтобы включить захват tcpdump с размером файла, ограниченным 250 МБ.

 sudo tcpdump -i any -s0 -vvv -W 999 -C 250 -w FILENAME.pcap. -Z root
  

С другой стороны, результат, который я получаю,

 FILENAME.pcap.001
FILENAME.pcap.002
FILENAME.pcap.003
  

Но я хотел бы знать, как преобразовать имя выходного файла в:

 FILENAME001.pcap
FILENAME002.pcap
FILENAME003.pcap
  

Спасибо за любую помощь, которую вы можете предложить!

Комментарии:

1. у tcpdump нет этой функции. Либо вы обрабатываете имена файлов своим собственным скриптом, либо изменяете исходный код tcpdump, чтобы добавить эту функцию.

2. @kaylum, спасибо за ответ. Можете ли вы предложить способ переименования tcpdump с помощью опции -C во время выполнения, я имею в виду, пока tcpdump все еще запущен, а файл уже создан, в скрипте bash. Или я действительно должен запустить для этого отдельный скрипт.

Ответ №1:

вы можете использовать функцию -z, которая означает, что :

-z postrotate-команда, используемая в сочетании с параметрами -C или -G, это заставит tcpdump запускать » postrotate-command file «, где file — это файл сохранения, закрываемый после каждого поворота. Например, указание -z gzip или -z bzip2 приведет к сжатию каждого файла сохранения с использованием gzip или bzip2.

           Note that tcpdump will run the command in parallel to the capture, using the lowest priority so that this  doesn't  disturb  the  capture
          process.

          And in case you would like to use a command that itself takes flags or different arguments, you can always write a shell script that will
          take the savefile name as the only argument, make the flags amp; arguments arrangements and execute the command that you want.
  

Ответ №2:

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

 for f in FILENAME.pcap.*; do
    mv "$f" "$(echo $f | sed 's/FILENAME.pcap.(.*)/FILENAME1.pcap/')";
done