13

Как я могу захватить последние N секунд пакетов, используя tcpdump?

6 ответов6

14

Если вы просто хотите, чтобы tcpdump запускался в течение n секунд, а затем выходил, вы можете использовать тайм-аут.

Например:

timeout 2 tcpdump -eni mon0

В противном случае я не верю, что tcpdump имеет возможность сделать это.

3

Я думаю, что лучший способ сделать это с помощью флага -G tcpdump, который при использовании с -w будет сохранять ваш дамп в новый файл каждые N секунд. Например:

tcpdump -w outfile-% s -G 10

Это создаст новый файл с именем 'outfile-XXXX' (где XXXX представляет количество секунд с начала эпохи) каждые 10 секунд.

См. Справочные страницы для tcpdump(8) и strftime(3) для получения дополнительной информации.

1

Вы можете использовать tethereal вместо tcpdump. Вы можете использовать эту опцию командной строки:

-a duration:X
0

Я пытался решить ту же проблему, поэтому я написал переносимый скрипт для запуска tcpdump в течение n секунд.

#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@ 
tcpdump $@ & x=$!
sleep $n
kill $x

Использование ./tcpdump_for_n_sec.sh sec аргументы для tcpdump

./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
0

tcpdump options -w new.tcpdump

ps -ef |grep tcpdump

принять к сведению PID, скажем, это 11193

at 11:00 kill 11193

теперь просто подождите до 11:00 и ваш захват будет убит, но сохранен

0

sudo tcpdump -i -w & это запустит tcpdump в спящем режиме

  • w: сохранить вывод в файле .pcap &: процесс tcpdump будет запущен в режиме ожидания. Примечание: убедитесь, что у вас достаточно свободного места, если хотите. запустить его на некоторое время. Он не прервется, если выйдет из системы, пока вы не убьете процесс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .