linux - comandos - ¿Cómo programar tcpdump para que se ejecute durante un período de tiempo específico?
tcpdump comandos (4)
El enfoque que mejor me funcionó en Ubuntu 14.04
sudo -i
crontab -e
y luego agregar la linea
30 17 * * * /usr/sbin/tcpdump -G 12600 -W 1 -s 3000 -w /home/ubuntu/capture-file.pcap port 5060 or portrange 10000-35000
Notas
- -El indicador G indica el número de segundos para que se ejecute el volcado, este ejemplo se ejecuta diariamente de 5:30 PM a 9:00 PM
- -W es el número de iteraciones que ejecutará tcpdump
- El trabajo cron no se agregará hasta que guarde y salga del archivo
- Este ejemplo es para capturar paquetes de un servidor de teléfono Asterisk
Cada vez, cuando ejecuto tcpdump
manualmente, tengo que usar Ctrl + C para detenerlo. Ahora quiero programar mi tcpdump
con cronjob y solo lo necesito para funcionar durante 1 hora y media. Sin ejecutar manualmente Ctrl + C o el comando kill, ¿cómo se puede detener automáticamente? Aquí está el comando que estoy probando:
tcpdump -i eth0 ''port 8080'' -w myfile
Puedo programar otro cronjob para matar el proceso tcpdump
, pero no parece una buena idea.
Podrías hacerlo así:
tcpdump -i eth0 ''port 8080'' -w myfile &
pid=$!
sleep 1.5h
kill $pid
Puede combinar -G {sec}
(rotar los archivos de volcado cada x segundos) y -W {count}
(límite de archivos de volcado) para obtener lo que desea:
tcpdump -G 15 -W 1 -w myfile -i eth0 ''port 8080''
correría durante 15 segundos y luego se detendría. Convierte 1.5 horas en segundos y debería funcionar.
podrías usar el tiempo de espera
timeout 5400 tcpdump -i eth0 ''port 8080'' -w myfile