使用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()

最新文章

  1. LeetCode() Largest Number
  2. 5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task
  3. python核心编程第六章练习6-11
  4. Entity Framwork(EF) 7——在Controller内获取指定字段的值
  5. osgi 命令
  6. $(function(){})和$(document).ready(function(){})
  7. 关于Struts2的Validator的配置找不到DTD
  8. nginx upstream模块
  9. MyBatis 通过包含的jdbcType类型和java中对应的数据类型
  10. IOS 特定于设备的开发:监测Retina支持
  11. get方式提交中文乱码(两次编码,一次解码)
  12. 一个 Linux 上分析死锁的简单方法
  13. laravel 开启定时任务需要操作
  14. linux信息收集
  15. http 动态路由
  16. 4th,Python三级菜单
  17. Python:dictionary
  18. java面试题整理(3)
  19. CentOS 6下 Oracle11gR2 设置开机自启动
  20. 解压.bz2失败

热门文章

  1. easyGUI 用法介绍
  2. Ubuntu下SSH无密码验证配置
  3. DrawerLayout 设置为滑动范围全盘
  4. maven assembly plugin使用
  5. ThinkPHP框架 祖辈分的理解 【儿子 FenyeController】继承了【父亲 FuController】继承了【祖辈 Controller】的
  6. zookeeper的Java客户端API
  7. [Day3]Scanner类、Random类、流程控制语句
  8. [math] 绘制空间几何体的直观图
  9. [cloud][sdn] openstack openflow opendaylight openvswitch
  10. [daily] pandoc