Как запланировать tcpdump для выполнения в течение определенного периода времени?
Каждый раз, когда я запускаю вручную tcpdump
, я должен использовать Ctrl + C, чтобы остановить его. Теперь я хочу запланировать мой tcpdump
с помощью cronjob, и мне нужно всего лишь запустить его на полтора часа. Без ручного запуска Ctrl + C или команды kill, как ее можно остановить автоматически? Вот команда, которую я тестирую:
tcpdump -i eth0 'port 8080' -w myfile
Я могу запланировать еще один cronjob, чтобы убить процесс tcpdump
, но, похоже, это не очень хорошая идея.
Ответы
Ответ 1
Вы можете объединить -G {sec}
(повернуть файлы дампа каждые x секунд) и -W {count}
(ограничение # файлов дампа), чтобы получить то, что вы хотите:
tcpdump -G 15 -W 1 -w myfile -i eth0 'port 8080'
будет работать в течение 15 секунд, а затем остановится. Поверните 1,5 часа в секундах, и он должен работать.
Ответ 2
вы можете использовать таймаут
timeout 5400 tcpdump -i eth0 'port 8080' -w myfile
Ответ 3
Вы можете сделать это следующим образом:
tcpdump -i eth0 'port 8080' -w myfile &
pid=$!
sleep 1.5h
kill $pid
Ответ 4
Подход, который работал лучше всего для меня на Ubuntu 14.04
sudo -i
crontab -e
а затем добавьте строку
30 17 * * * /usr/sbin/tcpdump -G 12600 -W 1 -s 3000 -w /home/ubuntu/capture-file.pcap port 5060 or portrange 10000-35000
Примечания
- -G флаг указывает число секунд для запуска дампа, этот пример выполняется ежедневно с 17:30 до 21:00.
- -W - число итераций, выполняемых tcpdump
- Задание Cron не будет добавлено до сохранения и выхода из файла.
- Этот пример предназначен для захвата пакетов на сервере Asterisk.