comandos linux tcpdump

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