分析nginx日志脚本之python

本文介绍了一个Python脚本,用于统计并排序一个月内所有日志文件中出现频率最高的IP地址。通过逐个处理每个日志文件并最终合并字典来实现每月IP访问频次的统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了对每个月的切割过的30个日志文件统计出访问最多的ip地址进行排序,整理了下面的脚本,主要思路是处理每一个日志文件的ip排序,最后进行字典合并,计算出月ip排序。
#!/usr/bin/env python

import os
import sys
import commands
import re


ipsort = {}
def IpSort(logfile):
ipadd = r'\.'.join([r'\d{1,3}']*4)
        re_ip = re.compile(ipadd)
        for line in open(logfile):
                match = re_ip.match(line)
                if match:
                        ip = match.group( )
                        ipsort[ip] = ipsort.get(ip, 0) + 1
#return ipsort
#logfile=ipsort
#print logfile,"\n",ipsort,"\n"
#ipnum[logfile] = ipsort
def ReadFile():

filedir = raw_input("Enter the path>").strip()
filelist = os.listdir(filedir)
filenum = 0
for line in filelist:
if line[-4:] == '.txt':
IpSort(line)
#s,r = commands.getstatusoutput("cat %s/%s |awk wc -l" %(filedir,line))


def mergeipnum(*ipns):
_keys = set(sum([ipn.keys() for ipn in ipns],[]))
#print _keys,
_ipnum_dic = {}
for _key in _keys:
#pass
#print _key
_ipnum_dic[_key] = sum([ipn.get(_key,0) for ipn in ipns])

print _ipnum_dic,


ReadFile()
mergeipnum(ipsort)

 

转载于:https://www.cnblogs.com/shantu/p/4598927.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值