返回顶部
首页 > 资讯 > 后端开发 > Python >【python学习】日志文件里IP访问最
  • 297
分享到

【python学习】日志文件里IP访问最

文件日志python 2023-01-31 01:01:41 297人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

日志文件例子:#111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /p_w_picpaths/i/GoTop.png Http/1.0" 200 486 "http://wh.xxxx


日志文件例子:

#111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /p_w_picpaths/i/GoTop.png Http/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; windows NT 6.1; Trident/5.0; SLCC2; .net CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
#111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /p_w_picpaths/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
#111.172.249.85 - - [12/Dec/2011:05:33:36 +0800] "GET /p_w_picpaths/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
#111.172.249.86 - - [12/Dec/2011:05:33:36 +0800] "GET /p_w_picpaths/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
#111.172.249.86 - - [12/Dec/2011:05:33:36 +0800] "GET 111.172.249.86 /p_w_picpaths/i/goTop.png HTTP/1.0" 200 486 "http://wh.xxxx.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"


代码:

import re

#列出所有IP,放入ipaddress 
f=open("/tmp/a.log","r")
ipaddress = []
lines = f.readlines()
for line in lines:
    ipaddress.extend(re.findall(r'([1-2]?\d?\d\.[1-2]?\d?\d\.[1-2]?\d?\d\.[1-2]?\d?\d)',line))
print ipaddress
f.close()

#分析ipaddress 里的IP,构建一个key-value字典
iptab = {}
for ipstr in ipaddress:
  if ipstr in iptab:
    iptab[ipstr] += 1
  else:
    iptab[ipstr] = 1
print 'iptab = %s' % iptab

#对values的所有值进行倒序排列
ipnum = iptab.values()
ipnum.sort(reverse=True)
print ipnum

#找出values值前三的key,即访问量前三的IP
toplist=[]
for num in ipnum[0:3]:
  for key in iptab:
    if iptab[key] == num and key not in toplist :
      print "%s has %s times" % (key,num)
      toplist.append(key)
      break


--结束END--

本文标题: 【python学习】日志文件里IP访问最

本文链接: https://lsjlt.com/news/184585.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作