python---实战日志文件中查找特定字段,文件操作读写、排序、替换、列表、集合
2017-09-20 22:53
856 查看
python—实战日志文件中查找特定字段,文件操作读写、排序、替换、列表、集合
在服务器上新建以下文件:
原始日志文件(使用*号对敏感数据进行打码处理)
需要分析的账户ID值(使用*号对敏感数据进行打码处理):
需要分析的登录ID值(使用*号对敏感数据进行打码处理):
执行的脚本文件:
保存结果的文件信息:
在服务器上新建以下文件:
root@kali:~/python/laowangpy# ls idsearch.py logid.txt id.txt memid.txt result.txt root@kali:~/python/laowangpy# root@kali:~/python/laowangpy# ls -la 总用量 444 drwxr-xr-x 2 root root 4096 9月 20 22:20 . drwxr-xr-x 16 root root 4096 9月 3 09:27 .. -rw-r--r-- 1 root root 2283 9月 20 21:19 idsearch.py -rw-r--r-- 1 root root 305046 9月 20 21:19 id.txt -rw-r--r-- 1 root root 8991 9月 20 21:18 logid.txt -rw-r--r-- 1 root root 1090 9月 20 21:18 memid.txt -rw-r--r-- 1 root root 18929 9月 20 22:21 result.txt root@kali:~/python/laowangpy#
原始日志文件(使用*号对敏感数据进行打码处理)
root@kali:~/python/laowangpy# more id.txt 122.155.130.** > 172.16.162.**:80 - - [20/Sep/2017:03:51:39 +0800] merchants.*****.com "POST /api/login HTTP/1.0" 200 72 "https://merchants.*****.com/" 200 172.16.162.**:9090 0.039 0.026 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safar i/537.36 SE 2.X MetaSr 1.0" "122.155.130.**, 47.89.13.250" "{\x22merchantId\x22:\x222001****23\x22,\x22userId\x22:\x22admin***\x22,\x22passWord\x 22:\x2236e1b00693b5e06440aeafca80*****\x22,\x22loginType\x22:\x221\x22}" .............. .............. ............. --More--(1%) 122.155.130.** > 172.16.162.**:80 - - [20/Sep/2017:14:08:26 +0800] merchants.*****.com "POST /api/login HTTP/1.0" 200 564 "https://merchants.*****.com/" 200 172.16.162.14:9090 0.563 0.403 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0" "122.155.130.**, 47.88.50.**" "{\x22passWord\x22:\x221c477b2365d1566c555766f0d1d*****\x22,\x22userId\x22:\x22admin***\x22,\x22merchantId\x22:\x222001****25\x22,\x22loginType\x22:\x221\x22}" 122.155.130.** > 172.16.162.**:80 - - [20/Sep/2017:14:24:36 +0800] merchants.*****.com "POST /api/login HTTP/1.0" 200 564 "https://merchants.*****.com/" 200 172.16.162.**:9090 0.512 0.306 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0" "122.155.130.**, 47.88.50.50" "{\x22merchantId\x22:\x222001****25\x22,\x22userId\x22:\x22admin***\x22,\x22passWord\x22:\x22b84d6d159aa9606ccbfd181456*****\x22,\x22loginType\x22:\x221\x22}" root@kali:~/python/laowangpy#
需要分析的账户ID值(使用*号对敏感数据进行打码处理):
root@kali:~/python/laowangpy# cat memid.txt 2001****01 2001****02 .......... .......... .......... 2001****96 2001****97 2001****98 2001****99 root@kali:~/python/laowangpy#
需要分析的登录ID值(使用*号对敏感数据进行打码处理):
root@kali:~/python/laowangpy# more logid.txt admin**1 admin**2 admin**3 ........ ........ ........ admin**8 admin**9 --More--(4%)
执行的脚本文件:
root@kali:~/python/laowangpy# cat idsearch.py #!/usr/bin/python # --*-- coding:utf-8 --*-- #把存放结果的result.txt文本内容清空,每次运行脚本,都先清空,在写入内容 f4 = open('result.txt','w') f4.write('')#清空文件内容 f4.close() # 读取原始的日志文件 m = open('id.txt').read()#全部读取日志文件 m = m.replace("\\",'%')#对\\字符使用%替换 #print m n = m.replace('%x22',' ')#对%x22字符使用空格替换 #print n l = n.split(' ')#对出现的空格进行字符串分割,此步骤很关键!! print '----------------------------------------------------------------------------------' #print l #读取登录的账号ID值 f1 = open('memid.txt').read()#全部读取内容 r = f1.replace('\n','%')#对账户ID中换行符号使用%替换 s = r.split('%')#对账户ID进行%分割 #print s#把账户ID值转成列表 t = [(x,l.count(x)) for x in s]#在整理成新日志的列表l中,对列表s遍历查找账户ID值,如果存在,则统计次数,此处参考http://blog.csdn.net/xwbk12/article/details/78014509 的第2答题 #print t v =sorted(t)#对列表t转换成集合v #print v print '===========账户ID值,及统计次数====================' u = sorted(t,key=lambda x:x[1],reverse=True)#对集合v中使用第二个key值大小,并从大到小排序 print u #列表不能直接写入文件,只能转换成字符串,才可以写入文件中 #对读取日志匹配到的账户id值,使用追加方式写入result.txt文件中 str1 = str(u)#转换字符串才可以写入文件 f3 = open('result.txt','a+')# f3.write('\n') f3.write(str1)#对转换的字符串进行写入文本中 f3.write('\n') f3.close() #读取登录ID值 f2=open('logid.txt').read()#全部读出登录ID值 a = f2.replace('\n','%')#对登录ID中换行符使用%替换 b = a.split('%')#对登录ID进行%分割 c = [(x,l.count(x)) for x in b]#在整理成日志的列表l中,对列表b遍历查找登录ID值,如果存在,则统计次数,此处参考http://blog.csdn.net/xwbk12/article/details/78014509 的第2答题 d = sorted(c)#对列表t转换成集合d e = sorted(c,key=lambda x:x[1],reverse=True)#对集合b中使用第二个key值大小,并从大到小排序 print '------------登录ID值adminxxx,及统计次数--------------' print e #列表不能直接写入文件,只能转换成字符串,才可以写入文件中 #对读取日志匹配到的登录id值,使用追加方式写入result.txt文件中 str2 =str(e)#转换字符串才可以写入文件 f3 = open('result.txt','a+') f3.write('\n') f3.write(str2)#转换字符串才可以写入文件 f3.write('\n') f3.close() root@kali:~/python/laowangpy#
保存结果的文件信息:
root@kali:~/python/laowangpy# more result.txt [('2001****12', 60), ('2001****34', 54), ('2001****26', 34), ('2001****21', 32), ('2001****32', 28), ('2001****02', 24), ('2001****33', 24), ('20 01****22', 22), ('2001****23', 22), ('2001****07', 18), ('2001****24', 18), ('2001****28', 18), ('2001****31', 16), ('2001****13', 14), ('2001****29', 14), ('2001****20', 12), ('2001****25', 12), ('2001****08', 8), ('2001****18', 8), ('2001****19', 8), ('2001****06', 6), ('2001****01', 0),...........] [('admin361', 54), ('admin025', 32), ('admin720', 32), ('admin367', 28), ('admin005', 24), ('admin936', 24), ('admin943', 24), ('admin964', 22), ('admin847', 20), ('admin412', 18), ('admin602', 18), ('admin610', 18), ('admin165', 16), ('admin119', 14), ('admin968', 14), ('admin263', 12), ( 'admin407', 12), ('admin030', 8), ('admin167', 8), ('admin223', 8), ('admin705', 6), ('admin001', 0),......]
相关文章推荐
- python---实战3统计特定时间次数(文件操作、替换、列表、排序、去重、元组、集合)
- python---实战5筛选特定数据的长度、最多(字典、元组、列表、文件操作、替换)
- python 文件读写查找、替换相关简单操作
- python---实战4统计特定时间中特定信息次数(替换、次数、列表、排序、元组)待完善
- python---实战统计用户数量(文件操作、替换、列表、去重、元组)
- Python__查找替换指定文件中的特定字符串
- python文件操作(1)--扫描某目录下的文件列表信息存入日志文件
- python3 -- 列表操作(排序 查找 清空 反转 计数 扩展)
- python---字符串的拼接、去重、反转、字母花样排序、单词出现判断、统计文件特定单词频率lambda、硬盘容量、列表转字符串
- python-使用用户与密码登录验证的检索特定字段ver1(含文件操作知识)
- python小程序:查找nginx日志文件的ip点击率并排序
- 初学Java,集合类的排序,查找,替换操作
- python学习-1-列表,元组,字典,集合,文件操作
- python基础 第一天 (列表操作、字典操作,集合操作,文件操作)
- [置顶] Python联系笔记2[列表,元组,集合,字典,函数,文件操作,模块,类]
- Python中的列表(添加二元列表、连接、查找、排序、反序、赋值、删除、分片操作、负索引、)
- 初学Java,集合类的排序,查找,替换操作(三十五)
- Python小白的发展之路之Python基础(二)【字符串、列表、集合、文件操作】
- python学习-1-列表,元组,字典,集合,文件操作
- Python 文件的读写操作