#!/bin/bash
#Author:Sunshihe
#----------
#Time:2020-04-27 07:18:11
#Name:test07.sh
#Version:V1.0
#Description:This is a test script.
[ -f /etc/init.d/functions ]&& . /etc/init.d/functions
function ipt(){
awk '{print $1}' /applicaton/web/access.log|sort|uniq -c|sort -nr -k1 >/tmp/tmp.log
exec < /tmp/tmp.log
while read line
do
IP=echo $line|awk '{print $1}'
PV=echo $line|awk '{print $2}'
if [ $PV -gt 100 -a iptable -L -n|grep "$line"|wc -l -lt 1 ];then
iptables -INPUT -s $IP -j DROP
RETVAL=$?
if [ $RETVAL -eq 0 ];then
action "iptables -I INPUT -s $IP -j DROP" /bin/true
echo "$IP" >> /tmp/ip_$(date +%F).log
else
action "iptables -I INPUT -s $IP -j DROP" /bin/false
fi
fi
done
}
function del(){
exec </tmp/ip_$(date +%F -d '-1day').log
while read line
do
if [ iptables -L -n |grep "$line"|wc -l -ge 1 ];then
iptables -D INPUT -s $IP -j DROP
fi
done
}
main(){
flag=0
while true
do
sleep 180
((flag++))
ipt
[ $flag -ge 480 ]&& del && flag=0
done
}
main
==============================================================================================