#!/bin/sh
#获取当前时间格式:yyyy-mm-dd
dd=`date +%F`
#日志文件路径
path='/logs/'${dd}'.log'
#nginx 黑名单路径文件
nginx_path=/nginx/ips.conf
#获取ip出现次数按照降序排列并输出到文件
`grep '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' $path -o | sort -k1,1nr | uniq -c | sort -k1,1nr > /ip/${dd}.text`
#ip列表文件
ip_path=/ip/$dd.text
#索引
ii=1
#ip出现次数
index=0
#ip写入次数
yx_line=0
for line in `cat $ip_path`
do
yu=$(( $ii % 2 ))
ii=`expr $ii + 1`
if [ $yu -eq 1 ] ; then
index=$(( $line + 0 ))
else
if [ $index -gt 50 ] ; then
ip=$line
ip_count=$(( `cat $nginx_path | grep -c $ip` ))
if [ $ip_count -eq 1 ] ; then
index=0
continue;
else
yx_line=`expr $yx_line + 1`
`echo 'deny '$ip';' >> $nginx_path`
fi
index=0
fi
index=0
fi
done
# 如果有数据写入则重新加载 nginx
if [ $yx_line -gt 0 ] ; then
/etc/init.d/nginx reload
fi