Вывод канала tcpdump с опцией буфера -B

Вывод канала tcpdump с опцией буфера -B

Я обрабатываю вывод tcpdump в Ubuntu 16.04LTS с помощью следующей команды:

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

Это работает, но, к сожалению, слишком много пакетов для обработки скриптами, которые я хочу написать, поэтому я хотел бы удалить пакеты, которые приходят с одного и того же IP-адреса, чтобы они приходили каждые 100 мс или около того. Я не вижу способа сделать это на странице руководства tcpdump. Есть ли способ сделать это?

Я видел, что можно настроить размер буфера с помощью -B, но когда я пытаюсь выполнить следующее с помощью тестового скрипта Python (который просто выводит то, что он читает на stdin):

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

Я не получаю ничего, кроме пустых строк, выводимых на терминал. Я не понимаю, как работает буфер, потому что если я не передаю его в скрипт, вывод на терминал работает нормально с помощью:

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

(скрипт Python):

import sys

while True:
    print sys.stdin.readline()

Может ли кто-нибудь объяснить, есть ли способ эффективно ограничить количество пакетов в секунду с каждого IP-адреса, которые выводятся, и если нет, как работает опция -B, и можно ли ее передать в скрипт Python, подобный этому?

решение1

После проб и ошибок я обнаружил, что если я попробую что-то ниже 256 в опции -B, это не сработает. Так что, если это поможет кому-то еще, используйте по крайней мере-B 256

Связанный контент