Estoy buscando poder capturar una salida de tcpdump giratoria que capture 30 minutos de datos, en 48 archivos, cíclicamente.
La página del manual implica que esto debería ser posible, pero mis pruebas no parecen producir el resultado que estoy buscando:
-W
Utilizado junto con la
-C
opción, esto limitará el número de archivos creados al número especificado y comenzará a sobrescribir archivos desde el principio, creando así un búfer 'giratorio'. Además, nombrará los archivos con suficientes ceros iniciales para admitir la cantidad máxima de archivos, permitiéndoles ordenarlos correctamente.Utilizado junto con la
-G
opción, esto limitará el número de archivos de volcado rotados que se crean, saliendo con el estado 0 al alcanzar el límite. Si también se usa con-C
, el comportamiento dará como resultado archivos cíclicos por segmento de tiempo.
Estoy ejecutando esto en clientes OS X 10.9.5 / 10.10.3. Aquí está el comando de prueba; solo sale después del 3er archivo:
tcpdump -i en0 -w /var/tmp/trace-%Y-%M-%d_%H.%M.%S.pcap -W 3 -G 3 -C -K -n
Respuestas:
Eso es porque escribiste en
-W 3
lugar de-W 48
. Sin embargo, hay otros errores en su comando.La opción
-G
significa:Desde que escribiste
-G 3
, rotarás esto cada 3 segundos, mientras declarasAdemás, el esquema de nombres es incorrecto: de lo anterior,
Por lo tanto, no tiene sentido especificar el formato de hora para el nombre.
Además, la
-C
opción no tiene argumento, mientras que, de acuerdo con la página del manual , debería:La página del manual dice:
Por lo tanto, debe especificar
-C 100
para producir archivos de 100 MB.Al final, su comando debería ser:
Esto rotará los archivos (de los nombres trace1, trace2, ...) cíclicamente, con el período 48, ya sea cada 1800 segundos (= 30 minutos) o cada 100 MB, lo que ocurra primero.
fuente
If no time format is specified, each new file will overwrite the previous.
(he actualizado la respuesta)Ampliando la respuesta de flabdablet (cambiando
-G 1800
a-G 300
- rotación cada cinco minutos - solo para fines de prueba),le dará
%m=month
,%d=day of month
,%H=hour of day
,%M=minute of day
,%S=second of day
,%s=millisecond of day
, lo que resulta enMuy útil para organizar rastros para esos molestos problemas intermitentes. Además, si no eres root, es posible que desees
sudo
y, por supuesto, que sea un nohup:fuente
Me parece que todo lo que necesitas es
El especificador de formato de strftime que -G espera en el nombre de archivo -w no tiene que representar una fecha y hora completas. Con solo% H y% M, y un tiempo de rotación de exactamente media hora, cualquier invocación dada de tcpdump solo generará dos valores diferentes de% M separados por media hora, y los archivos de rastreo de ayer se sobrescribirán cuando sea la misma hora y los minutos vuelven a aparecer.
fuente
Después de experimentar un poco, no pude obtener la respuesta de @MariusMatutiae para trabajar como se esperaba. Si la hora se convirtió en el factor limitante y sin la adición del formato de hora al nombre del archivo, entonces el archivo pcap actual simplemente se sobrescribe.
Por ejemplo, intente:
Todo lo que terminas es
trace.pcap0
escribir una y otra vez.Como sugirió en el comentario, si agrega el formato de hora al nombre del archivo, simplemente termina con cada lista de archivos en crecimiento.
Por lo tanto, tuve que seguir con archivos de tamaño limitado:
fuente
Sí, no parece funcionar como dice la respuesta de MariusMatutiae .
Me parece que podría estar capturando tantos
-C 100
archivos MB como sea posible en un período de 30 minutos porquehttpdebug.pcap03
tiene la marca de tiempo más temprana y es mucho más pequeña que 100 MB, por lo que parece que se cortó en una marca de 30 minutos. Una vez que llega a los 30 minutos, parece saltarhttpdebug.pcap00
e incrementar el número a medida que alcanza los 100 MB. Esto significa que si tiene muchas solicitudes en un período de 30 minutos, obtendrá números muy altos de httpdebug.pcapXX. Si nunca llega a tantas solicitudes en un período, esos altos números httpdebug.pcapXX nunca se sobrescribirán.Así que estoy pensando que los archivos cíclicos por segmento de tiempo significan que el segmento de tiempo es
-G 1800
y que ciclará cada uno-G 1800
e incrementará cada uno-C 100
.No estoy seguro si lo
-W 48
afecta, pero tal vez si lo hacehttpdebug.pcap47
(el conteo comienza en 0`, dejará de capturar paquetes.Hace poco, se abrió un problema de GitHub sobre la redacción confusa. No cambiaron la implementación, pero intentaron aclarar un poco la documentación.
Los cambios propuestos se fusionaron el 28 de enero de 2019 .
A partir de hoy, 17 de marzo de 2019, aquí está la documentación actual:
-C
:-G
:-W
:Todavía creo que es un poco confuso, pero supongo que la diferencia con respecto a mi conclusión anterior es que dice que
-W
cuando se usa-C -G
no afecta nada más que el nombre del archivo.En general,
-W
se usa para limitar la cantidad de archivos. Así que no lo use si desea capturar indefinidamente.fuente