
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
速度測定には(pv
Debian / Ubuntuのパッケージ)をお勧めします。行数とバイト数を計算できます。
たとえば、デフォルトのtcpdumpはパケットごとに1行を提供するため、2秒ごとにパケットレートを印刷します。
tcpdump -ni eth0 udp port 66 |pv -li2 >/dev/null
バイトレートの場合は、tcpdump
rawパケットを出力して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)"