# !/bin/bash # 進入日志目錄 cd /www/wwwlogs; # 遍歷訪問日志文件 過濾錯誤日志 dirs=`ls ./*.log | grep -v error.log`; # 設置IP黑名單配置文件 blockip_file='/www/server/nginx/conf/block_ip.conf'; for dir in ${dirs[@]} do # 列出最近5000條訪問數據 過濾掉蜘蛛 列出Ip 並排序 # 計算出ip重復的次數並記錄在旁邊 # 排序后 把重復次數大於 50的ip 寫入ip黑名單內 tail -n 5000 $dir \ | grep -v 'splider' \ | awk '{print $1}' \ | sort \ | uniq -c \ | sort -rn \ | awk '{ if ($1 > 50) print "deny "$2";"}' >> $blockip_file; done # 過濾正常允許訪問的ip allow_ip=`cat /www/server/nginx/conf/allow_ip.conf`; # 將阻塞ip去重后再寫入 ips=`cat $blockip_file | sort -u | grep -v "$allow_ip"` echo "$ips" > $blockip_file; # 重載nginx配置 nginx -s reload;