计算每秒传入数据包数量的脚本?

Script to count number of incoming packets per second?

目前,我正在尝试编写一个脚本,该脚本将在启动时 运行 (Debian Linux),并每十秒计算一次每秒传入数据包的数量。这样做的目的是研究减轻 DoS 攻击的不同方法,但我真的不知道如何设置脚本的这个基本功能。我已经对完成此任务的最佳方法进行了大量研究,但确实找不到我要找的东西。由于我是 Linux 脚本编写的初学者,有人可以用通俗易懂的语言描述完成此过程的过程吗?非常感谢!

试试这个:

#!/bin/bash

old_packets=0

while true; do
    packets=$(awk ' == "eth0:"{print }' /proc/net/dev)
    if ((old_packets)); then
        clear
        echo "$(bc <<< "($packets - $old_packets) / 10") packets/seconds"
    fi
    old_packets=$packets
    sleep 10
done

其中 eth0 是目标接口。

编辑:

来自评论,如果你想禁用 eth0 如果速率超过 20 packets/seconds :

#!/bin/bash

old_packets=0

while true; do
    packets=$(awk ' == "eth0:"{print }' /proc/net/dev)
    if ((old_packets)); then
        clear
        # the variable rate contains the packets/seconds
        rate=$(bc <<< "($packets - $old_packets) / 10")
        echo "$rate packets/seconds"
        if ((rate>20)); then
            ip link set eth0 down
        fi
    fi
    old_packets=$packets
    sleep 10
done

如果你想 运行 这个脚本在启动时,你可以编辑你的 /etc/rc.local 文件,它在启动过程结束时执行。