Python统计日志中每个IP出现次数的方法


Posted in Python onJuly 06, 2015

本文实例讲述了Python统计日志中每个IP出现次数的方法。分享给大家供大家参考。具体如下:

这脚本可用于多种日志类型,本人测试MDaemon的all日志文件大小1.23G左右,分析用时2~3分钟

代码很简单,很适合运维人员,有不足的地方请大家指出哦

#-*- coding:utf-8 -*-
import re,time
def mail_log(file_path):
  global count
  log=open(file_path,'r')
  C=r'\.'.join([r'\d{1,3}']*4)
  find=re.compile(C)
  count={}
  for i in log:
    for ip in find.findall(i):
      count[ip]=count.get(ip,1)+1
if __name__ == '__main__':
  print time.clock()
  num=0
  mail_log(r'e:\MDaemon-20110329-all.log')
  R=count.items()
  for i in R:
    if i[1]>0: #提取出现次数大于0的IP
      print i
      num+=1
  print '符合要求数量:%s耗时(%s)'%(num,time.clock())

输出结果如下:

('206.220.200.250', 8)
('66.40.52.37', 10)
('66.40.52.36', 5)
('207.115.11.41', 4)
('96.47.193.25', 9)
('96.47.193.24', 5)
('96.47.193.23', 17)
('72.32.181.92', 5)
('67.76.103.168', 10)
('64.34.161.218', 5)
('209.151.96.3', 7)
('61.135.168.0', 15)
('199.81.128.37', 2)
('199.81.128.36', 2)
('199.81.128.38', 2)
('198.45.19.170', 16)
('12.236.15.9', 4)
('66.96.142.52', 51)
('66.96.142.51', 55)
('66.96.142.50', 62)
('64.18.5.13', 1553)
('69.39.47.14', 9)
('64.18.5.11', 1557)
('64.18.5.10', 2752)
('210.72.13.102', 4)
('64.118.108.196', 4)
('66.60.192.44', 26)
('112.90.194.8', 4)
('198.49.244.245', 5)
('216.183.174.227', 5)
('195.245.230.131', 5)
('211.115.13.27', 5)
('222.247.123.217', 3)
('218.213.85.210', 2)
('201.236.205.96', 3)
('209.85.161.136', 2)
('173.165.120.188', 5)
('50.22.89.39', 7)
('219.129.20.168', 3)
('24.106.197.167', 5)
('207.190.225.69', 4)
('156.3.32.236', 5)
('209.92.157.161', 5)
('216.153.192.200', 5)
('76.77.158.130', 3)
('12.166.4.221', 5)
('66.46.182.96', 4)
('80.252.97.102', 4)
('66.46.182.94', 5)
('66.46.182.95', 4)
('124.14.5.3', 3)
('202.85.139.0', 5)
('207.173.160.17', 15)
('143.101.0.21', 5)
('65.75.75.59', 9)
('77.88.21.89', 53)
('216.128.11.30', 44)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
Python中的zipfile模块使用详解
Jun 25 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
python中的tcp示例详解
Dec 09 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
详解Python 最短匹配模式
Jul 29 Python
python统计日志ip访问数的方法
Jul 06 #Python
python检查指定文件是否存在的方法
Jul 06 #Python
python转换字符串为摩尔斯电码的方法
Jul 06 #Python
python实现文件路径和url相互转换的方法
Jul 06 #Python
详解Python中的Cookie模块使用
Jul 06 #Python
python计算文本文件行数的方法
Jul 06 #Python
python实现ping的方法
Jul 06 #Python
You might like
用ODBC的分页显示
2006/10/09 PHP
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
php长字符串定义方法
2012/07/12 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
php实现的双向队列类实例
2014/09/24 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
python异步任务队列示例
2014/04/01 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
dpn网络的pytorch实现方式
2020/01/14 Python
Python日志syslog使用原理详解
2020/02/18 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
中专生自我鉴定
2013/12/17 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
四查四看剖析材料
2014/02/14 职场文书
村庄绿化方案
2014/05/07 职场文书
单方投资意向书
2015/05/11 职场文书
法定代表人身份证明书
2015/06/18 职场文书