使用python脚本实现统计日志文件中的ip访问次数
2024-10-11 08:27:22
使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下
适用的日志格式:
106.45.185.214 - - [06/Aug/2014:07:38:59 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
171.104.119.22 - - [06/Aug/2014:08:55:01 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
27.31.238.242 - - [06/Aug/2014:09:43:19 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
218.65.202.131 - - [06/Aug/2014:10:33:59 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
以上为nginx的日志,本程序只适合用于IP在开头并用空格分开的这种格式。
实例代码:
import sys class Log: def __init__(self, filename,dic,count):
self.filename = filename
self.dic=dic
self.count=count def parse(self):
i=1
f=file(self.filename)
while True:
line=f.readline()
if len(line)==0:
break
ip=line.split(' ')
if ip[0] in dic:
self.dic[ip[0]]=self.dic[ip[0]]+1
else:
self.dic[ip[0]]=i
soredic=sorted(self.dic.items(), key=lambda d:d[1],reverse=True)
counts=0;
for item in soredic:
if counts==int(self.count):
break
print("IP:%s Total Times: %s"%(item[0],item[1]))
counts=counts+1
f.close() if __name__=="__main__": if len(sys.argv)<3:
print('usage:log.py log.log toptimes\nexample log.py log.log 20\ncode by iswin')
sys.exit()
dic={}
log=Log(sys.argv[1],dic,sys.argv[2])
log.parse()
最新文章
- LeetCode() Largest Number
- 5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task
- python核心编程第六章练习6-11
- Entity Framwork(EF) 7——在Controller内获取指定字段的值
- osgi 命令
- $(function(){})和$(document).ready(function(){})
- 关于Struts2的Validator的配置找不到DTD
- nginx upstream模块
- MyBatis 通过包含的jdbcType类型和java中对应的数据类型
- IOS 特定于设备的开发:监测Retina支持
- get方式提交中文乱码(两次编码,一次解码)
- 一个 Linux 上分析死锁的简单方法
- laravel 开启定时任务需要操作
- linux信息收集
- http 动态路由
- 4th,Python三级菜单
- Python:dictionary
- java面试题整理(3)
- CentOS 6下 Oracle11gR2 设置开机自启动
- 解压.bz2失败
热门文章
- easyGUI 用法介绍
- Ubuntu下SSH无密码验证配置
- DrawerLayout 设置为滑动范围全盘
- maven assembly plugin使用
- ThinkPHP框架 祖辈分的理解 【儿子 FenyeController】继承了【父亲 FuController】继承了【祖辈 Controller】的
- zookeeper的Java客户端API
- [Day3]Scanner类、Random类、流程控制语句
- [math] 绘制空间几何体的直观图
- [cloud][sdn] openstack openflow opendaylight openvswitch
- [daily] pandoc