1先写脚本,此次使用的是web日志,如果实际连接,可以配合任务计划实现:
图1
2任务计划:
图2
//需要添加sh的执行权限,此处测试未添加任务计划。
3验证
图3
具体脚本:
cat /root/access_log | awk '{IP[$1]++}END{for(i in IP){print i,IP[i]}}' > /tmp/hosts.txt
while read ip number;do
if [ $number -gt 100 ] ;then
iptables -A INPUT -s $ip -j REJECT
echo "from $ip $number rejected" >> /tmp/reject.txt
fi
done < /tmp/hosts.txt
由于此处使用cat加awk会容易造成文件过大时,cat会消耗其不小的性能!!!!!!!!!!!!!!!!