Как я могу захватить последние N секунд пакетов, используя tcpdump?
6 ответов
Если вы просто хотите, чтобы tcpdump запускался в течение n секунд, а затем выходил, вы можете использовать тайм-аут.
Например:
timeout 2 tcpdump -eni mon0
В противном случае я не верю, что tcpdump имеет возможность сделать это.
Я думаю, что лучший способ сделать это с помощью флага -G tcpdump, который при использовании с -w будет сохранять ваш дамп в новый файл каждые N секунд. Например:
tcpdump -w outfile-% s -G 10
Это создаст новый файл с именем 'outfile-XXXX' (где XXXX представляет количество секунд с начала эпохи) каждые 10 секунд.
См. Справочные страницы для tcpdump(8) и strftime(3) для получения дополнительной информации.
Вы можете использовать tethereal вместо tcpdump. Вы можете использовать эту опцию командной строки:
-a duration:X
Я пытался решить ту же проблему, поэтому я написал переносимый скрипт для запуска 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
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
принять к сведению PID, скажем, это 11193
at 11:00
kill 11193
теперь просто подождите до 11:00 и ваш захват будет убит, но сохранен
sudo tcpdump -i -w & это запустит tcpdump в спящем режиме
- w: сохранить вывод в файле .pcap &: процесс tcpdump будет запущен в режиме ожидания. Примечание: убедитесь, что у вас достаточно свободного места, если хотите. запустить его на некоторое время. Он не прервется, если выйдет из системы, пока вы не убьете процесс.