zoukankan      html  css  js  c++  java
  • nginx 阻止ip访问

    #!/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
    
  • 相关阅读:
    springdataJpa对无主键表或视图查询的支持
    Blynk系列随笔
    arduino系列文章
    Debezium系列随笔
    Kafka系列随笔
    SSAS 收藏
    Saiku 系列
    Mondrian系列
    数据仓库理论学习
    加密解密
  • 原文地址:https://www.cnblogs.com/fairyin/p/9071355.html
Copyright © 2011-2022 走看看