#导入正则模块 import re auth="no_shutdown_" ''' 分析日志的模块,查找日志中标志性信息产生的次数 ''' #定义你须要查找的对象的正则表达式wordcheck #须要分析的日志的路径filesource def checklog(wordcheck,filesource): #定义一个空的字典用来存放查询的结果 size={} #异常捕获当文件不存在的时候抛出异常 try: #打开日志文件 file=open(filesource,"r") #循环读取日志文件的每一行 for i in file: #使用re模块的search功能查找当前行是否能和正则匹配 x=re.search(wordcheck,i) #若是匹配到结果则执行if中的代码 if x: #取出查询到的结果 tmp=x.group() #get函数做用是若是字典中取不到key的值则赋一个默认值,也就是每一次查询到一个新的结果就将这个结果做为key vlaue=0新加到字典中 size[tmp]=size.get(tmp,0) #在字典中将value加1,记录一次查找 size[tmp]+=1 #关闭文件 file.close() #若是有异常抛出文件异常 except FileExistsError as e: print(e) #没有异常打印结果 else: return size #测试分析apache访问日志中的全部访问过的ip和次数 rs=checklog("(\d+\.){3}\d+","/var/log/httpd/access_log") print(rs)
结果
由于是测试机上的日志结果比较少
{'127.0.0.1': 58, '192.168.2.254': 10}正则表达式