При запуске tcpdump в командной строке пакеты появляются в реальном времени по мере их получения. Однако, когда tcpdump передается куда-либо, он прибегает к буферизованному выводу. Параметры -l
и -U
позволяют настроить это. Однако я обнаружил, что независимо от того, какие параметры я устанавливаю, результат никогда не бывает таким быстрым, как при запуске из сырого CLI. Я пробовал Python с subprocess, tee и даже оболочкой Rust. Пакеты всегда выводятся партиями.
Есть идеи?
решение1
Теперь tcpdump имеет --immediate-mode
, который решил эту проблему для меня. Чтобы заставить его работать, я использовал его в сочетании с -l
.
Видетьэтот ответ.