#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