特定のUDPポートのトラフィック監視

特定のUDPポートのトラフィック監視

Bashを使用して特定のUDPポートで着信トラフィック速度を監視する方法はありますか?

特定のインターフェイスからのトラフィックを表示できるnload、vnstatなどのツールがあります。

この状況で誰でも私を助けることができますか?これは、特定のポートのトラフィックに基づいていくつかのbash操作を実行したいからです。

答え1

tcpdump -i eth0 -w /tmp/xxx.pcap udp port xxx

ポートxxxのpcapファイルが提供されます。

トラフィックだけが問題である場合は、以下をハッキングできます。

while : ; do 
    sudo timeout  5   tcpdump -i eth0 -s0 port 53 2> /dev/null | wc -l ; 
done

答え2

pv速度測定には(pvDebian / Ubuntuのパッケージ)をお勧めします。行数とバイト数を計算できます。

たとえば、デフォルトのtcpdumpはパケットごとに1行を提供するため、2秒ごとにパケットレートを印刷します。

tcpdump -ni eth0 udp port 66 |pv -li2 >/dev/null

バイトレートの場合は、tcpdumprawパケットを出力してpvそのバイトを計算するように要求します(デフォルトモード)。

tcpdump -ni eth0 udp port 66 -w- |pv -i2 >/dev/null

しかし、非対話型の方法(例:「10秒間サンプルを採取して測定値を提供する」)で使用できるかどうかはわかりません。私が見つけた最も近い方法は次のとおりです。

rate="$((timeout 11 tcpdump -ni eth0 udp port 66 -w- 2>/dev/null |pv -i10 -F%a -f >/dev/null) 2>&1)"

関連情報