python统计日志ip访问数脚本

Linux就该这么学
  1. import re  
  2. tudou@Gyyx  
  3. f=open("/tmp/a.log","r")  
  4. arr={}  
  5. lines = f.readlines()  
  6. for line in lines:  
  7.     ipaddress=re.compile(r'^#(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))')  
  8.     match=ipaddress.match(line)  
  9.     if match:  
  10.         ip = match.group(1)  
  11.         if(arr.has_key(ip)):  
  12.             arr[ip]+=1  
  13.         else:  
  14.             arr.setdefault(ip,1)  
  15.           
  16. f.close()  
  17. for key in arr:  
  18.     print key+"->"+str(arr[key])  

日志格式为

 

[html] view plaincopyprint?

 

  1. #111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /images/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)"  
  2. #111.172.249.84 - - [12/Dec/2011:05:33:36 +0800] "GET /images/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)"  
  3. #111.172.249.85 - - [12/Dec/2011:05:33:36 +0800] "GET /images/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)"  
  4. #111.172.249.86 - - [12/Dec/2011:05:33:36 +0800] "GET /images/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->1

111.172.249.84->2

111.172.249.85->1

注释:python字段的setdefault用法为获取信息,如果获取不到的时候就按照他的参数设置该值

 

[html] view plaincopyprint?

 

  1. >>> a={}  
  2. >>> a['key']='123'  
  3. >>> print (a)  
  4. {'key': '123'}  
  5. >>> print (a.setdefault('key','456'))  #显示a这个字典的'key'值的内容,因为字典有,所以不会去设置它  
  6. 123  
  7.   
  8. >>> print (a.setdefault('key1','456')) #显示a这个字典的'key1'值的内容,因为字典没有,所以设置为456了  
  9. 456  
  10. >>> a  
  11. {'key1': '456', 'key': '123'}  




 

 

本文由 CentOS中文站 - 专注Linux技术 作者:centos 发表,其版权均为 CentOS中文站 - 专注Linux技术 所有,文章内容系作者个人观点,不代表 CentOS中文站 - 专注Linux技术 对观点赞同或支持。如需转载,请注明文章来源。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注