针对切割Nginx动态日志自动拉黑脚本

#!/bin/bash

#日志存放目录
LOGS=/data/wwwlogs/
#Nginx目录
NGINX_DIR=/usr/local/nginx/conf/vhost
#阻止IP配置
BLOCKIP=blockip.conf

#判断nginx是否有vhost目录
if [[ ! -d $NGINX_DIR ]];then
  mkdir -p $NGINX_DIR
  echo "$NGINX_DIR 目录创建成功!"
else
  echo "$NGINX_DIR 目录已经存在,无需创建!"
fi
#判断是否有blockip.conf文件
if [[ ! -f $NGINX_DIR/$BLOCKIP ]];then
  touch $NGINX_DIR/$BLOCKIP
  echo "$BLOCKIP 文件创建成功!"
else
  echo "$BLOCKIP 文件已经存在,无需创建!"
fi

#批量查询日志,并显示日志最后1000行中的第1,11,14列
find $LOGS -type f -name "*.com_nginx.log" -exec tail -n1000 {} \; | awk '{print $4,$9,$10}' |
#内部IP,防止把自己给屏蔽导致不能正常访问
grep -Ev "127.0.0.1|localhost" |
#阿里云IP过滤,不知道为什么可能会导致403错误,应该是阿里云的CDN加速
grep -Ev "140.205.253.*|119.23.169.*|123.57.117.*|122.227.164.206" |
#过滤搜索引擎蜘蛛
grep -i -Ev "google|yahoo|baidu|msnbot|FeedSky|sogou|360|bing|soso|403|api" |
#对IP进行统计访问次数与排序
awk '{print $1}' | sort | uniq -c | sort -rn |
#查询1000条内的ip判断超过50次进行拉黑,并输出到nginx配置文件
awk '{if($1>50)print "deny "$2";"}' > $NGINX_DIR/$BLOCKIP
#加载Nginx配置
#/usr/local/nginx/sbin/nginx -s reload

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/160.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
针对切割Nginx动态日志自动拉黑脚本
#!/bin/bash #日志存放目录 LOGS=/data/wwwlogs/ #Nginx目录 NGINX_DIR=/usr/local/nginx/conf/vhost #阻止IP配置 BLOCKIP=blockip.conf #判断nginx是否有vh……
<<上一篇
下一篇>>
文章目录
关闭
目 录