トップ 差分 一覧 ソース 検索 ヘルプ 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()