本文实例讲述了Python统计日志中每个IP出现次数的方法。分享给大家供大家参考。具体如下:
这脚本可用于多种日志类型,本人测试MDaemon的all日志文件大小1.23G左右,分析用时2~3分钟
代码很简单,很适合运维人员,有不足的地方请大家指出哦
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#-*- coding:utf-8 -*- import re,time def mail_log(file_path): global count log = open (file_path, 'r' ) C = r '\.' .join([r '\d{1,3}' ] * 4 ) find = re. compile (C) count = {} for i in log: for ip in find.findall(i): count[ip] = count.get(ip, 1 ) + 1 if __name__ = = '__main__' : print time.clock() num = 0 mail_log(r 'e:\MDaemon-20110329-all.log' ) R = count.items() for i in R: if i[ 1 ]> 0 : #提取出现次数大于0的IP print i num + = 1 print '符合要求数量:%s耗时(%s)' % (num,time.clock()) |
输出结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
( '206.220.200.250' , 8 ) ( '66.40.52.37' , 10 ) ( '66.40.52.36' , 5 ) ( '207.115.11.41' , 4 ) ( '96.47.193.25' , 9 ) ( '96.47.193.24' , 5 ) ( '96.47.193.23' , 17 ) ( '72.32.181.92' , 5 ) ( '67.76.103.168' , 10 ) ( '64.34.161.218' , 5 ) ( '209.151.96.3' , 7 ) ( '61.135.168.0' , 15 ) ( '199.81.128.37' , 2 ) ( '199.81.128.36' , 2 ) ( '199.81.128.38' , 2 ) ( '198.45.19.170' , 16 ) ( '12.236.15.9' , 4 ) ( '66.96.142.52' , 51 ) ( '66.96.142.51' , 55 ) ( '66.96.142.50' , 62 ) ( '64.18.5.13' , 1553 ) ( '69.39.47.14' , 9 ) ( '64.18.5.11' , 1557 ) ( '64.18.5.10' , 2752 ) ( '210.72.13.102' , 4 ) ( '64.118.108.196' , 4 ) ( '66.60.192.44' , 26 ) ( '112.90.194.8' , 4 ) ( '198.49.244.245' , 5 ) ( '216.183.174.227' , 5 ) ( '195.245.230.131' , 5 ) ( '211.115.13.27' , 5 ) ( '222.247.123.217' , 3 ) ( '218.213.85.210' , 2 ) ( '201.236.205.96' , 3 ) ( '209.85.161.136' , 2 ) ( '173.165.120.188' , 5 ) ( '50.22.89.39' , 7 ) ( '219.129.20.168' , 3 ) ( '24.106.197.167' , 5 ) ( '207.190.225.69' , 4 ) ( '156.3.32.236' , 5 ) ( '209.92.157.161' , 5 ) ( '216.153.192.200' , 5 ) ( '76.77.158.130' , 3 ) ( '12.166.4.221' , 5 ) ( '66.46.182.96' , 4 ) ( '80.252.97.102' , 4 ) ( '66.46.182.94' , 5 ) ( '66.46.182.95' , 4 ) ( '124.14.5.3' , 3 ) ( '202.85.139.0' , 5 ) ( '207.173.160.17' , 15 ) ( '143.101.0.21' , 5 ) ( '65.75.75.59' , 9 ) ( '77.88.21.89' , 53 ) ( '216.128.11.30' , 44 ) |
希望本文所述对大家的Python程序设计有所帮助。