#! /bin/bash
N=350
while :; do
tail -n 500 access.log |awk '{print $5}'|sort |uniq -c |sort -n|tail -n1 >/tmp/cc.log
n=`awk '{print $1}' /tmp/cc.log`
dom=`awk '{print $2}' /tmp/cc.log`
if [ $n -gt $N ] ; then
tail -n 500 access.log| grep $dom |awk '{print $1}'|sort -n |uniq |grep -v '192.168.' |xargs -n1 -i{} iptables -I INPUT -s {} -j DROP
fi
sleep 10 // 上边的500和这里的10是对应的,该服务器每秒钟产生的日志大约为50个
done
N=350
while :; do
tail -n 500 access.log |awk '{print $5}'|sort |uniq -c |sort -n|tail -n1 >/tmp/cc.log
n=`awk '{print $1}' /tmp/cc.log`
dom=`awk '{print $2}' /tmp/cc.log`
if [ $n -gt $N ] ; then
tail -n 500 access.log| grep $dom |awk '{print $1}'|sort -n |uniq |grep -v '192.168.' |xargs -n1 -i{} iptables -I INPUT -s {} -j DROP
fi
sleep 10 // 上边的500和这里的10是对应的,该服务器每秒钟产生的日志大约为50个
done
编辑回复