バッファ -B オプションを使用して tcpdump の出力をパイプする

バッファ -B オプションを使用して tcpdump の出力をパイプする

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

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

これは機能しますが、残念ながら、書きたいスクリプトを処理するにはパケットが多すぎるため、同じ IP アドレスから送信されるパケットを 100 ミリ秒ごとに 1 回削除したいと思います。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

関連情報