Salida de canalización de tcpdump con la opción buffer -B

Salida de canalización de tcpdump con la opción buffer -B

Estoy procesando la salida de tcpdump en Ubuntu 16.04LTS usando el siguiente comando:

$ sudo tcpdump -i wlan0 -e -s 64 -n -j adapter -K -l | python script.py

Esto funciona, pero desafortunadamente, hay demasiados paquetes que manejar para los scripts que quiero escribir, por lo que me gustaría eliminar los paquetes que provienen de la misma dirección IP una vez cada 100 ms aproximadamente. No veo una manera de hacer esto en la página de manual de tcpdump. ¿Hay una manera de hacer eso?

Vi que puedes ajustar el tamaño del búfer usando -B, pero cuando intento ejecutar lo siguiente con un script de prueba de Python (que simplemente genera lo que lee en la entrada estándar):

$ sudo tcpdump -i wlan0 -e -s 64 -n -j adapter -K -B 64 -l | python test.py

No obtengo nada más que líneas en blanco en el terminal. No entiendo cómo funciona el búfer, porque si no lo canalizo a un script, la salida al terminal funciona bien usando:

$ sudo tcpdump -i wlan0 -e -s 64 -n -j adapter -K -B 64 -l

(escritura de Python):

import sys

while True:
    print sys.stdin.readline()

¿Alguien puede explicar si hay una manera de limitar efectivamente la cantidad de paquetes por segundo de cada dirección IP que se generan y, de no ser así, cómo funciona la opción -B y si se puede canalizar a un script de Python como este?

Respuesta1

Después de prueba y error, descubrí que si intentaba algo inferior a 256 en la opción -B, fallaría. Entonces, en caso de que esto ayude a alguien más, use al menos-B 256

información relacionada