Як я можу захопити останні N секунд пакетів за допомогою tcpdump?
Як я можу захопити останні N секунд пакетів за допомогою tcpdump?
Відповіді:
Якщо ви просто хочете, щоб tcpdump запустився протягом n секунд, а потім вийшов, ви можете використовувати тайм-аут.
Наприклад:
timeout 2 tcpdump -eni mon0
Інакше я не вірю, що tcpdump має можливість це зробити.
Я думаю, що найкращий спосіб досягти цього - прапором -GG tcpdump, який при використанні з -w зберігатиме ваш дамп у новий файл кожні N секунд. Наприклад:
tcpdump -w outfile-% s -G 10
Це створить новий файл з назвою 'outfile-XXXX' (де XXXX представляє кількість секунд з епохи) кожні 10 секунд.
Додаткову інформацію див. У сторінках з підручниками для tcpdump (8) та стрифлінгу (3).
Ви можете використовувати tethereal замість tcpdump. Ви можете використовувати цей параметр командного рядка:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
) забирає трафік, який коштує десять хвилин від інтерфейсу eth0 до файлу $ (ім'я хоста) .10mins.pcap
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
взяти до відома PID, скажімо, це 11193
at 11:00
kill 11193
тепер просто зачекайте, поки настане 11:00, і ваш захоплення буде вбито, але збережено
Я намагався вирішити ту саму проблему так, я написав портативний сценарій, щоб запустити 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 сек аргументів для tcpdump
./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
sudo tcpdump -i -w & це запустить tcpdump у сплячому режимі