首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python编写分析apache访问日志的脚本

python编写分析apache访问日志的脚本

作者头像
吴柯
发布2018-04-16 14:33:55
8540
发布2018-04-16 14:33:55
举报

编写用于分析apache日志的脚本,主要要求如下:

  • 统计每个客户端访问apache服务器的次数
  • 将统计信息通过字典的方式显示出来
  • 分别统计客户端是Firefox和MSIE的访问次数
  • 分别使用函数式编程和面向对象编程的方式实现

简单实现

# vim countweb.py

#!/usr/bin/env python

import re

logfile = '/var/log/httpd/access_log'

cdict = {}

patt_ip = '^\d+\.\d+\.\d+\.\d+' #定义匹配IP地址的正则表达式

with open(logfile) as f:

for eachLine in f:

m = re.search(patt_ip, eachLine)

if m is not None:

ipaddr = m.group()

#如果IP地址已在字典中,将其值加1,否则初始值设置为1

cDict[ipaddr] = cDict.get(ipaddr, 0) + 1

print cDict

使用函数式编程实现

# vim countweb2.py

!/usr/bin/env python

import re

def countPatt(patt, fname): #定义可以在指定文件中搜索指定字符串的函数

cDict = {}

with open(fname) as f:

for eachLine in f:

m = re.search(patt, eachLine)

if m is not None:

k = m.group()

cDict[k] = cDict.get(k, 0) + 1

return cDict

def test():

logfile = '/var/log/httpd/access_log'

patt_ip = '^\d+\.\d+\.\d+\.\d+'

print countPatt(patt_ip, logfile)

patt_br = 'Firefox|MSIE'

print countPatt(patt_br, logfile)

if __name__ == '__main__':

test()

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吴柯的运维笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档