python脚本实现统计日志文件中的ip访问次数代码分享
作者:junjie 发布时间:2021-03-17 08:40:08
标签:python,统计,ip
适用的日志格式:
106.45.185.214 - - [06/Aug/2014:07:38:59 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
171.104.119.22 - - [06/Aug/2014:08:55:01 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
27.31.238.242 - - [06/Aug/2014:09:43:19 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
218.65.202.131 - - [06/Aug/2014:10:33:59 +0800] "GET / HTTP/1.0" 200 10 "-" "-"
以上为nginx的日志,本程序只适合用于IP在开头并用空格分开的这种格式。
实例代码:
import sys
class Log:
def __init__(self, filename,dic,count):
self.filename = filename
self.dic=dic
self.count=count
def parse(self):
i=1
f=file(self.filename)
while True:
line=f.readline()
if len(line)==0:
break
ip=line.split(' ')
if ip[0] in dic:
self.dic[ip[0]]=self.dic[ip[0]]+1
else:
self.dic[ip[0]]=i
soredic=sorted(self.dic.items(), key=lambda d:d[1],reverse=True)
counts=0;
for item in soredic:
if counts==int(self.count):
break
print("IP:%s Total Times: %s"%(item[0],item[1]))
counts=counts+1
f.close()
if __name__=="__main__":
if len(sys.argv)<3:
print('usage:log.py log.log toptimes\nexample log.py log.log 20\ncode by iswin')
sys.exit()
dic={}
log=Log(sys.argv[1],dic,sys.argv[2])
log.parse()


猜你喜欢
- 之前的表单验证都是用js写的,这里也可以使用tp框架的验证。但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度
- 前言最近在写nuxt项目时候每次新建页面都要去新建然后引入各种需要的依赖很是麻烦,所以想写一个脚本自动生成文件 省去手动新建现写下实现方法
- 前言众所周知在java或php等很多面向对象的语言中, 异常处理是依靠throw、catch来进行的。在go语言中,panic和recove
- 开发背景:每次项目都要写数据库、烦死了。。然后就每次数据库都要花很多时间。烦死了!不如写个通用的增删查改,以不变应万变!特性:搭建通用增删查
- 前言在AI领域,来快速实现一个idea:前后端开发+部署+展现,如果走传统的前后端分离开发+服务器docker部署等方式,会很重且入门成本很
- 本文实例讲述了Python实现删除列表中满足一定条件的元素。分享给大家供大家参考,具体如下:从列表中删除满足一定条件的元素。如:删除一个列表
- 像素误差看自己设计好上线的网站,偶尔会发觉像素行间出现了弹性空间,总在不经意间蹦出一定的差距。有些页面很难发现,比如活动类页面,这类页面多呈
- 扪心自问,你真正了解你卖给用户的是什么玩意么?你所认为革命性的,一定会震惊世界的功能、特色,用户真的买单么?我的意思是,我们总是习惯性的忘记
- 利用Pytest+Request+Allure+Jenkins实现接口自动化;实现一套脚本多套环境执行;利用参数化数据驱动模式,实现接口与测
- 本文实例讲述了PHP实现ASCII码与字符串相互转换的方法。分享给大家供大家参考,具体如下:<?phpclass ascii { &n
- 前言一个表和多个表进行关联,但具体随着业务的加深,表不断的增加,关联的数量不断的增加,怎么通过一开始通过表的设计后,不在后期在修改表,彻底的
- ChatGPT模型是由OpenAI训练的大型语言模型,能够生成类人文本。通过向它提供提示,它可以生成继续对话或扩展给定提示的响应。在此中,您
- 时间戳的问题我们的微博应用的一个忽略了很久的问题就是日间和日期的显示。直到现在,我们在我们的User和Post对象中使用Pyth
- MooTools 1.2介绍原文地址:30 Days of Mootools 1.2 Tutorials - Day 1 - Intro t
- numpy.ndarray中数据转为int型首先了解内容与类型>>>print(a)(array([[0.01124722
- 导语日常开发中,定位程序异常,追溯事件发生场景都需要通过日志记录的方式。可以说一个好的开发日志设计可以让开发人员在后续项目维护的过程中节省时
- 处理数据时,经常需要对索引进行处理,那么可以通过set_index和reset_index来进行处理官方文档DataFrame.set_in
- 训练用PyTorch编写的LSTM或RNN时,在loss.backward()上报错:RuntimeError: Trying to bac
- 一. lamda匿名函数为了解决一些简单的需求而设计的一句话函数# 计算n的n次方def func(n): return n**nprint
- 1. 原地交换两个数字Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:x,y= 10,20print