python统计nginx日志ip和流量,pythonnginx日志ip,python统计ngin
python统计nginx日志ip和流量,pythonnginx日志ip,python统计ngin
python统计nginx日志ip和流量统计nginx日志的访问ip和流量以及显示ip的归属地,支持分时间段统计--(主要用于学习水平有限)
python统计nginx日志ip和流量代码片段
1.[代码]nginx_log.py
#!/bin/env python#coding:utf-8#统计nginx的访问ip和流量#具有时间段分析功能import sysimport ip_locationimport timeimport rereload(sys)sys.setdefaultencoding('utf-8')#time_start=sys.argv[1]#time_start=sys.argv[2]ipflow={}ipnum={}#nginx日志log_file="/data/logs/lolo.log"#时间的正则和格式re_time='\d{2}\/\w{3}\/\d{4}:\d{2}:\d{2}:\d{2}'str_time='%d/%b/%Y:%H:%M:%S'#"时间段"class TimeParser(object): def __init__(self,re_time,str_time): self.re_time=re.compile(re_time) self.str_time=str_time def get(self,line): t=re.search(self.re_time,line).group(0) return time.mktime(time.strptime(t,self.str_time)) def inPeriod(self,line): t=self.get(line) return (t>time.mktime(time.strptime(start_time,self.str_time)) and t<time.mktime(time.strptime(end_time,self.str_time)))#处理函数class ParseLog(object): def __init__(self,file_name): self.file_name=file_name self.re_time=re.compile(re_time) self.srt_time=str_time def show(self): fd=open(self.file_name,"r") contens=fd.readlines() fd.close() Time=TimeParser(self.re_time,self.srt_time) for line in contens: if Time.inPeriod(line): ip=line.split()[1] flow=line.split()[10] #采用集合 if ip in set(k.lower() for k in ipflow): ipnum[ip]+=1 ipflow[ip]=int(ipflow[ip])+int(flow) else: ipnum[ip]=1 ipflow[ip]=int(flow) for k in ipnum: name=ip_location.ip_location(k) print "访问IP:%s 访问次数:%d 访问流量%.3fK 归属地:%s" %(k,int(ipnum[k]),ipflow[k],name)if __name__ == "__main__": if len(sys.argv) != 3: print "输入的参数错误" sys.exit() start_time=sys.argv[1] end_time=sys.argv[2] p=ParseLog(log_file) p.show()
2.[代码]ip_location.py
#!/usr/bin/env python# -*- coding: utf-8 -*-# the script is used to query the location of every ip#淘宝库ip地址查询import urllibimport jsonimport sys#淘宝ip库接口url = "http://ip.taobao.com/service/getIpInfo.php?ip="def ip_location(ip): data = urllib.urlopen(url + ip).read() datadict=json.loads(data) for oneinfo in datadict: if "code" == oneinfo: if datadict[oneinfo] == 0: return datadict["data"]["country"] + datadict["data"]["region"] + datadict["data"]["city"] + "\t\t" + datadict["data"]["isp"]if __name__ == "__main__": ip=sys.argv[1] name=ip_location(ip) print name
编橙之家文章,
相关内容
- python将uuid压缩成64位编码,pythonuuid,<python将uuid
- python获得 Alexa网站排名,pythonalexa,<python获得 Al
- 用Python实现最基本的电话本,Python实现电话,<用Pyth
- 用python代码科学上Google,python代码google,用python代码科学
- python终端播放音乐同步显示本地或网络歌词,python播放
- python获取情敌电脑内照片神器,,python获取情敌电脑
- python随机搜索并打开该路径内的文件,,标签: <pyt
- 基于python Selenium的用户登录自动化测试,pythonselenium,使
- 通过python hp ilo对机器的状态进行监控,pythonilo,<通过
- python深度搜索+命令模式 解数独,python解数,python深度搜
评论关闭