Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于计算每秒传入数据包数的脚本?_Linux_Scripting_Debian_Denial Of Service - Fatal编程技术网

Linux 用于计算每秒传入数据包数的脚本?

Linux 用于计算每秒传入数据包数的脚本?,linux,scripting,debian,denial-of-service,Linux,Scripting,Debian,Denial Of Service,目前,我正在尝试编写一个在启动时运行的脚本(DebianLinux),并每10秒计算每秒传入的数据包数。这篇文章的目的是研究不同的方法来减轻DoS攻击,但我真的不知道如何设置脚本的这个基本函数。我对实现这一目标的最佳方式做了很多研究,但真的找不到我想要的。因为我是Linux脚本的初学者,有人能用外行的话描述一下实现这一点的过程吗?非常感谢你 试试这个: #!/bin/bash old_packets=0 while true; do packets=$(awk '$1 == "eth

目前,我正在尝试编写一个在启动时运行的脚本(DebianLinux),并每10秒计算每秒传入的数据包数。这篇文章的目的是研究不同的方法来减轻DoS攻击,但我真的不知道如何设置脚本的这个基本函数。我对实现这一目标的最佳方式做了很多研究,但真的找不到我想要的。因为我是Linux脚本的初学者,有人能用外行的话描述一下实现这一点的过程吗?非常感谢你

试试这个:

#!/bin/bash

old_packets=0

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

如果要在启动时运行此脚本,可以编辑
/etc/rc.local
文件,该文件将在启动过程结束时执行。

应帮助您启动哪个变量用于存储每秒发送的数据包数?我对脚本非常陌生,所以有些语法让我有点困惑。它是用
echo“$(bc好的。如果我试图在If语句中使用数据包的数量(即,如果传入数据包的数量>x,禁用eth0连接),我该怎么做?确切地说,是哪个变量(如果该术语适用)我应该在if语句中使用吗?我已经习惯于使用依赖变量来存储信息的较新语言(C++,Java),所以可能这就是为什么我挂断了这种逻辑的原因。再次感谢您的帮助。为了澄清这一行
rate=$(bc)谢谢你的帮助。我真的很感谢你为我的研究所做的一切。
#!/bin/bash

old_packets=0

while true; do
    packets=$(awk '$1 == "eth0:"{print $3}' /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