Estoy monitoreando un determinado puerto, porque mi aplicación usa ese puerto, parece que la conexión se cae en momentos aleatorios, quiero ver cuáles son los últimos paquetes que pasan antes de que se caiga la conexión: usé esta línea
sudo tcpdump -XX -i eth0 port 3050 | tail >> tcpamir.txt
pero para que funcione tengo que iniciar otra terminal y emitir
sudo killall tcpdump
¿Existe un mejor enfoque? EDITAR 1: es importante capturar solo los últimos paquetes ya que no quiero que el archivo aumente, ya que hay suficiente tráfico para llenar el espacio en disco rápidamente.
Respuesta1
Ok, creo que encontré unsolución:
sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050
Esto rota su archivo de salida cada 10 segundos a un nuevo archivo llamadotcpamir-<unixtimestamp>.txt
También puede modificar el archivo de salida para que se sobrescriba todos los días, si le preocupa el tamaño del archivo pendiente. Para más información lea man 3 strftime
.
pienso en algo como
sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400
Donde %R
da la hora en notación de 24 horas (12:40, por ejemplo).
Leer archivos de salida relevantes con
sudo tcpdump -r tcpamir-<unixtimestamp>.txt
Segunda solución:
Divídalo en más comandos y guárdelo como un script/función:
sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt
Respuesta2
Si solo deseas escribir todo el tráfico capturado solo tienes que agregar -w a la línea eliminando'| cola >> tcpamir.txt'
# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap
Si analiza la captura en Wirehark, la extensión debe ser .cap. Cuando se asegure de que la captura esté realizada, puede eliminar esto concontrol + c
NOTA: -w [nombre de archivo.cap] para escribir la captura en un archivo