特定 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 为每个数据包提供一行,因此这将每 2 秒打印一次数据包速率:

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

对于字节率,要求tcpdump输出原始数据包并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)"

相关内容