Linux 用于计算每秒传入数据包数的脚本?
目前,我正在尝试编写一个在启动时运行的脚本(DebianLinux),并每10秒计算每秒传入的数据包数。这篇文章的目的是研究不同的方法来减轻DoS攻击,但我真的不知道如何设置脚本的这个基本函数。我对实现这一目标的最佳方式做了很多研究,但真的找不到我想要的。因为我是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
#!/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