buffer -B オプションを使用した tcpdump のパイプ出力

buffer -B オプションを使用した tcpdump のパイプ出力

次のコマンドを使用してUbuntu 16.04LTSでtcpdumpの出力を処理しています。

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

これはうまくいきますが、残念ながら、作成したいスクリプトに対して処理するパケットが多すぎるため、100ミリ秒ごとに同じIPアドレスからパケットを破棄しようとします。 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アドレスあたりの1秒あたりの出力パケット数を効果的に制限する方法があるか、それ以外の場合は-Bオプションがどのように機能するのか、そしてそのようなPythonスクリプトにパイプすることができるかを説明できますか?

答え1

いくつかの試行錯誤の終わりに-Bオプションを使用して256未満の値を試すと失敗することがわかりました。したがって、これが他の人に役立つ場合は、少なくとも以下を使用してください。-B 256

関連情報