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

 更新时间:2015年07月06日 15:00:30   作者:小欢  
这篇文章主要介绍了Python统计日志中每个IP出现次数的方法,实例分析了Python基于正则表达式解析日志文件的相关技巧,需要的朋友可以参考下

本文实例讲述了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面向对象类继承和组合实例分析

    Python面向对象类继承和组合实例分析

    这篇文章主要介绍了Python面向对象类继承和组合,结合实例形式分析了Python3面向对象继承的原理、用法以及继承与组合相关使用技巧,需要的朋友可以参考下
    2018-05-05
  • 浅析Python 引号、注释、字符串

    浅析Python 引号、注释、字符串

    这篇文章主要介绍了Python 引号、注释、字符串的相关知识,文中给大家提到了python中一对单引号,一对双引号,三个单双引号的区别和用法,需要的朋友可以参考下
    2019-07-07
  • 解决python3 整数数组转bytes的效率问题

    解决python3 整数数组转bytes的效率问题

    这篇文章主要介绍了解决python3 整数数组转bytes的效率问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python实现在列表中查找某个元素的下标示例

    python实现在列表中查找某个元素的下标示例

    这篇文章主要介绍了python实现在列表中查找某个元素的下标示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python实现汇率转换操作

    Python实现汇率转换操作

    这篇文章主要介绍了Python实现汇率转换操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python模拟用户登录验证

    Python模拟用户登录验证

    这篇文章主要为大家详细介绍了Python模拟用户登录验证的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 详解Django的model查询操作与查询性能优化

    详解Django的model查询操作与查询性能优化

    这篇文章主要介绍了详解Django的model查询操作与查询性能优化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Python中求对数方法总结

    Python中求对数方法总结

    这篇文章主要介绍了Python中求对数方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python合并两个字典的方法总结

    python合并两个字典的方法总结

    在Python中,有多种方法可以通过使用各种函数和构造函数来合并字典,在本文中,我们将讨论一些合并字典的方法,有需要的小伙伴可以参考一下·
    2023-09-09
  • Python内存管理实例分析

    Python内存管理实例分析

    这篇文章主要介绍了Python内存管理,结合实例形式分析了Python对象的引用、垃圾回收、分配等相关原理与操作技巧,需要的朋友可以参考下
    2019-07-07

最新评论