!! #!/bin/env python2 # -*- coding: utf-8 -*- import sys import re datetime='14/Apr/2017' ## ## ipadd = [] ## ## dtime =[] ## append command ## ## ipadd.append(ia) ipadd = {} datime = {} ## ['', '14', 'Apr', '2017', '09', '33', '21'] ## ['', '14', 'Apr', '2017', '09', '33', '21'] ## ['', '14', 'Apr', '2017', '09', '33', '31'] def datc(dd): ## ## 特定の文字列から日時に変換 ## ## d = dd.split("[/:") ## d= re.split(r'[|\/|:|\.',dd) d= re.split(r'\s|\[|\/|:',dd) # print d rd = d[3]+"/"+d[2]+"/"+d[1]+" "+d[4]+":"+d[5] return rd def runlog(): with open('./access_log','r') as flogs : for l in flogs: if ( re.search( datetime, l) ): log = l.split() ia = log[0] ## ipaddress dt = log[3] ## date time hc = log[8] ## http code ## if ( hc != "200" ): continue ## IP アドレス ## if ( ia not in ipadd ): ipadd[ia] = 1 else : ipadd[ia] += 1 ## ## 時間帯 ## dt2 = datc(dt) if ( dt2 not in datime ): datime[dt2] = 1 else : datime[dt2] += 1 def reports(): ## ## IPアドレスの印刷 ## ## print ipadd c = len( ipadd ) ik = ipadd.keys() ik.sort( key = ipadd.__getitem__, reverse = True) for i in range(c) : ## print i, ipadd(i) print ik[i], print ipadd[ik[i]] # print i ## ## 時間帯 ## ## print datime c = len( datime ) id = datime.keys() id.sort( key = datime.__getitem__, reverse = True) for i in range(c) : ## print i, datime(i) print id[i], print datime[id[i]] # print i if __name__ == '__main__': runlog() reports()