トップ 一覧 検索 ヘルプ RSS ログイン

PRG-py_ams-logの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!! 

 #!/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()