python读取日志统计ip_使用python脚本实现统计日志文件中的ip访问次数

使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用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()

&lbrack;linux&rsqb; shell脚本编程-统计日志文件中的设备号发通知邮件

1.日志文件列表 比如:/data1/logs/2019/08/15/ 10.1.1.1.log.gz 10.1.1.2.log.gz 2.统计日志中的某关键字shell脚本 zcat *.gz|gr ...

统计一个文件中出现字符&&num;39&semi;a&&num;39&semi;的次数

# -*- coding: utf-8 -*- #python 27 #xiaodeng #统计一个文件中出现字符'a'的次数 #http://www.cnblogs.com/hongten/p/ho ...

用shell统计访问日志里每个ip访问次数【转】

今天,要统计一个系统的每个ip访问次数,于是我找到该系统访问日志,并写脚本实现.   访问日志情况: [root@qular ~]# cd /usr/local/nginx/logs/ [root@q ...

【Python语言】--Crontab结合Python脚本实现将日志每天写入到文件中

一.前述 实际工作中将Python脚本每天定时写入到日志文件中的使用场景还是蛮多的,有很多种方法可以实现这种效果.本文选择一种方式实现,特将实现细节做如下分享,不当之处烦请指正. 二.具体 1.pyt ...

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

介绍了Python统计日志中每个IP出现次数的方法,实例分析了Python基于正则表达式解析日志文件的相关技巧,需要的朋友可以参考下 本脚本可用于多种日志类型 #-*- coding:utf-8 -* ...

python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)【转】

前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下.   apach ...

shell脚本之nginx启动脚本、统计日志字段、for循环实战、跳板机

1.NGINX启动脚本 #!/bin/bash # chkconfig: 235 32 62 # description: nginx [ -f /etc/init.d/functions ] &am ...

Python中将打印输出导向日志文件

a. 利用sys.stdout将print行导向到你定义的日志文件中,例如: import sys # make a copy of original stdout route stdout_back ...

Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...

随机推荐

SQL基础教程--实现增删查改功能&lpar;W3School&rpar;

1.SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法.但是 SQL 语言也包含用于更新 ...

(转)浅谈HTML5与css3画饼图!

神马系饼图? 饼图,大家都应该熟知,在统计数据对比方面,几乎处处用到.如cnzz的统计饼图 从饼图中,很形象地展示了访问者地区的分布,以扇形为块的方式拼成一个大圆. 都使用什么方法实现 目前众多站点制 ...

python 映射列表 学习

列表映射是个非常有用的方法,通过对列表的每个元素应用一个函数来转换数据,可以使用一种策略或者方法来遍历计算每个元素. 例如: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

&lbrack;BZOJ 1188&rsqb; &lbrack;HNOI2007&rsqb; 分裂游戏 【博弈论&vert;SG函数】

题目链接:BZOJ - 1188 题目分析 我们把每一颗石子看做一个单个的游戏,它的 SG 值取决于它的位置. 对于一颗在 i 位置的石子,根据游戏规则,它的后继状态就是枚举符合条件的 j, k.然后 ...

gpu显存(全局内存)在使用时数据对齐的问题

全局存储器,即普通的显存,整个网格中的随意线程都能读写全局存储器的任何位置. 存取延时为400-600 clock cycles  很easy成为性能瓶颈. 訪问显存时,读取和存储必须对齐,宽度为4B ...

【BZOJ3167】&lbrack;HEOI2013&rsqb;SAO(动态规划)

[BZOJ3167][HEOI2013]SAO(动态规划) 题面 BZOJ 洛谷 题解 显然限制条件是一个\(DAG\)(不考虑边的方向的话就是一棵树了). 那么考虑树型\(dp\),设\(f[i][ ...

Pandas详解一

pandas简介 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提 ...

V-rep学习笔记:Geometric Constraint Solver(几何约束求解)

The geometric constraint solver is slower and less precise at solving kinematic problems, but might ...

&dollar;python collections库

collections库是python内置的集合库,本文主要讲解以下5种数据结构的用法: namedtuple 命名元组,是tuple的子类 deque 双向列表 defaultdict 有默认值的字 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值