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 相关文章推荐
Python读取键盘输入的2种方法
Jun 16 Python
Python中type的构造函数参数含义说明
Jun 21 Python
详解Python的Lambda函数与排序
Oct 25 Python
Python时间戳使用和相互转换详解
Dec 11 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
Django安装配置mysql的方法步骤
Oct 15 Python
Python利用递归实现文件的复制方法
Oct 27 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
python项目对接钉钉SDK的实现
Jul 15 Python
python如何保证输入键入数字的方法
Aug 23 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
python 绘制场景热力图的示例
Sep 23 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
PHP中实现图片的锐化
2006/10/09 PHP
配置PHP使之能同时支持GIF和JPEG
2006/10/09 PHP
php 中include()与require()的对比
2006/10/09 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
基于node实现websocket协议
2016/04/25 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
python的迭代器与生成器实例详解
2014/07/16 Python
python实现2048小游戏
2015/03/30 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
Python单元和文档测试实例详解
2019/04/11 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
python3判断IP地址的方法
2021/03/04 Python
科长竞聘演讲稿
2014/05/16 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers