Як захопити останні N секунд пакетів за допомогою tcpdump


14

Як я можу захопити останні N секунд пакетів за допомогою tcpdump?


1
"Дай мені" не відведе тебе сюди далеко. Можливо, ви повинні показати нам, що ви намагалися до цього часу, і де саме виникають проблеми, які ви не можете вирішити самостійно.
matthias krull

Команда bash, яку ви хочете, - це: "man tcpdump"
Вільям Перселл

Відповіді:


15

Якщо ви просто хочете, щоб tcpdump запустився протягом n секунд, а потім вийшов, ви можете використовувати тайм-аут.

Наприклад:

timeout 2 tcpdump -eni mon0

Інакше я не вірю, що tcpdump має можливість це зробити.


На жаль, команда тайм-аута відсутня в CentOS 5.x. Він був доданий у новій версії coreutils. Ще одна мотивація для мене до оновлення ОС.
Mister_Tom

Я думаю, якщо у вас немає часу, ви можете створити щось на зразок тайм-аута за допомогою сценарію:
siesta

Для мене чудово працює. Я використовував це для моніторингу всього трафіку для програми, яка не працювала. Я запустив tcpdump з таймаутом N секунд. Потім я запустив програму (яка займає до N секунд).
Тревор Бойд Сміт

Питання вимагає зафіксувати останні N секунд. Ваша відповідь говорить про те, як зафіксувати перші N секунд.
Flimzy

3

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

tcpdump -w outfile-% s -G 10

Це створить новий файл з назвою 'outfile-XXXX' (де XXXX представляє кількість секунд з епохи) кожні 10 секунд.

Додаткову інформацію див. У сторінках з підручниками для tcpdump (8) та стрифлінгу (3).


tcpdump 3.9.4, що поставляється з CentOS 5.10, не має опції -G. Мені дійсно потрібно оновити ОС.
Mister_Tom

-G не зупиняє команду tcpdump. Він все ще працює вічно. Тайм-аут 2 tcpdump зупинить команду через 2 секунди.
цицерон

@ciceron: Питання полягало не в тому, щоб зупинити tcpdump. Йшлося про захоплення останніх N секунд . Ваша пропозиція охопить перші N секунд. Рішуче не те, про що просила ОП.
Flimzy

1

Ви можете використовувати tethereal замість tcpdump. Ви можете використовувати цей параметр командного рядка:

-a duration:X

Хоча це може відповісти на питання, було б кращою відповіддю, якщо ви могли б дати пояснення, чому це так.
DavidPostill

tcpdump сам по собі не дозволяє відстежувати час відстеження пакету, але tshark робить. (з тих пір, як на це запитання і відповіли, Ethereal став Wireshark tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap) забирає трафік, який коштує десять хвилин від інтерфейсу eth0 до файлу $ (ім'я хоста) .10mins.pcap
Andrew Beals

0

tcpdump options -w new.tcpdump

ps -ef |grep tcpdump

взяти до відома PID, скажімо, це 11193

at 11:00 kill 11193

тепер просто зачекайте, поки настане 11:00, і ваш захоплення буде вбито, але збережено


fwiw pgrep - набагато краща альтернатива ps | grep; особливо тут.
Хороша людина

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 сек аргументів для tcpdump

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

0

sudo tcpdump -i -w & це запустить tcpdump у сплячому режимі

  • w: збереження виводу у .pcap-файлі &: tcpdump процес запуститься у сплячому режимі. запустити його деякий час. Він не буде перериватися, якщо вийти з системи, поки ви не вб'єте процес.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.