同時アクセス制限のためのWebサイトにアクセスログを介してクライアントIPフィルタを達成するためのシェルスクリプト

#!/ binに/ bashの

#Author:LDK
#Contactメール:[email protected]
#Version:3.0
#Company:COMPANY
#Create時間:2019年7月17日17時31分58秒
#Description:手動クリーンアップのLinux OSのキャッシュ

マックス= 100000の
CFS =は/ usr / local / nginxの/ confに/ nginx.conf
LOGS =は/ usr / local / nginxの/ログ/ access.logを

ループ#1の反復
#濾別「$のREMOTE_ADDR」が定義されてのaccess.logアドレスを記録します。印刷とソート重複;
CAT LOGSの$ | awkの印刷$を{2} '|ソート-n | uniqは-C |並び替え-rn | 10 -nヘッド|しばらく読むラインが
ない
プリントアウトされ、変数$ IPを#定義しますIP;
IP = echo "$line" | awk '{print $2}'
#IPの数が表示されたプリントアウト、変数$カウントを定義します。
カウント= echo "$line" | awk '{print $1}'
#、変数$ドキュメントを定義するnginxの設定ファイルであり、
ドキュメントは= cat $conf_dir
#はそのようなIPが存在しない設定ファイルを見て、変数$裁判官を定義します。
裁判官=echo "$Docs" | grep "${IP}"

#判断,如果$Count的值大于$Max的值,并且在$Judges里为空,不是这也不是那,执行替换并写入到$Docs指定location下做deny操作,重载并continue;
if [[ $Count -gt $Max ]] && [[ $Judges == " " ]] && [[ $IP != "47.100.110.92" ]] && [[ $IP != "140.207.117.66" ]]
    then 
        sed -i  '/location \/ {/a\deny '${IP}';' $CFS
        sed -i  '/location \/files {/a\deny '${IP}';' $CFS
        sed -i  '/location \~\* \\\.apk\$ {/a\deny '${IP}';' $CFS
        sed -i  '/location \~\* \\\.mp4\*\$ {/a\deny '${IP}';' $CFS
        /usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload && echo "SUCCESS!!"
    else
        continue    
fi

完了

おすすめ

転載: blog.51cto.com/51eat/2445956