python脚本分析nginx日志1000条IP超过100次自动封 IP
最近有一些人或者网站总是喜欢爬取别人家网站内容,于是就想到利用python 脚本分析nginx日志1000条,
当 IP 1000次中超过100次 自动封 IP 功能,正常情况1000条记录,一般不会超过100个,当然,
你可以根据情况调整,python代码如下
#!/usr/bin/python
import os;
import string;
lines_ = os.popen("tail -n 1000 /logs/www/nginx.log |awk -F' ' '{print $1}'|sort|uniq -c|sort -n").read();
lines = lines_.split("\n");11
for line in lines:
if line != '':
line = line.strip();
lineArr = line.split(" ");
if int(lineArr[0])>50:
print lineArr[1]+"=="+lineArr[0];
print "ok";
这个代码,没有写封 I P 的功能,封 IP,一般普通的服务器不外乎就 iptables 和 nginx 的 deny 了
iptables很简单,我就不说了。
nginx 的话,可以在 python 脚本里面把超过限制的 IP,写入到一个文件里面然后 nginx ,include 就行了,当然你还要reload 下 nginx,注意,不要重启,没必要,只要加载配置文件即可。
最后就是加一个计划任务,譬如每隔5分钟运行一次,封禁稳稳的。
来源:包子博客http://www.jincon.com/archives/406/