亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python分析apache訪問日志腳本分享

2020-02-23 06:26:29
字體:
來源:轉載
供稿:網友
#!/usr/bin/env python# coding=utf-8 #------------------------------------------------------# Name:     Apache 日志分析腳本# Purpose:   此腳本只用來分析Apache的訪問日志# Version:   2.0# Author:    LEO# Created:   2013-4-26# Modified:   2013-5-4# Copyright:  (c) LEO 2013#------------------------------------------------------ import sysimport time #該類是用來打印格式class displayFormat(object):   def format_size(self,size):    '''格式化流量單位'''    KB = 1024         MB = 1048576        GB = 1073741824      TB = 1099511627776    if size >= TB :      size = str(size / TB) + 'T'    elif size < KB :      size = str(size) + 'B'    elif size >= GB and size < TB:      size = str(size / GB) + 'G'    elif size >= MB and size < GB :      size = str(size / MB) + 'M'    else :      size = str(size / KB) + 'K'    return size   formatstring = '%-15s %-10s %-12s %8s %10s %10s %10s %10s %10s %10s %10s'   def transverse_line(self) :    '''輸出橫線'''    print self.formatstring % ('-'*15,'-'*10,'-'*12,'-'*12,'-'*10,'-'*10,'-'*10,'-'*10,'-'*10,'-'*10,'-'*10)   def head(self):    '''輸出頭部信息'''    print self.formatstring % ('IP','Traffic','Times','Times%','200','404','500','403','302','304','503')   def error_print(self) :    '''輸出錯誤信息'''    print    print 'Usage : ' + sys.argv[0] + ' ApacheLogFilePath [Number]'    print    sys.exit(1)   def execut_time(self):    '''輸出腳本執行的時間'''    print    print "Script Execution Time: %.3f second" % time.clock()    print #該類是用來生成主機信息的字典class hostInfo(object):     host_info = ['200','404','500','302','304','503','403','times','size']   def __init__(self,host):    self.host = host = {}.fromkeys(self.host_info,0)   def increment(self,status_times_size,is_size):    '''該方法是用來給host_info中的各個值加1'''    if status_times_size == 'times':      self.host['times'] += 1    elif is_size:      self.host['size'] = self.host['size'] + status_times_size    else:      self.host[status_times_size] += 1   def get_value(self,value):    '''該方法是取到各個主機信息中對應的值'''    return self.host[value] #該類是用來分析文件class fileAnalysis(object):  def __init__(self):    '''初始化一個空字典'''    self.report_dict = {}    self.total_request_times,self.total_traffic,self.total_200,     self.total_404,self.total_500,self.total_403,self.total_302,     self.total_304,self.total_503 = 0,0,0,0,0,0,0,0,0   def split_eachline_todict(self,line):    '''分割文件中的每一行,并返回一個字典'''    split_line = line.split()    split_dict = {'remote_host':split_line[0],'status':split_line[-2],'bytes_sent':split_line[-1],}    return split_dict   def generate_log_report(self,logfile):    '''讀取文件,分析split_eachline_todict方法生成的字典'''    for line in logfile:      try:        line_dict = self.split_eachline_todict(line)        host = line_dict['remote_host']        status = line_dict['status']      except ValueError :        continue      except IndexError :        continue       if host not in self.report_dict :        host_info_obj = hostInfo(host)        self.report_dict[host] = host_info_obj      else :        host_info_obj = self.report_dict[host]       host_info_obj.increment('times',False)        if status in host_info_obj.host_info :         host_info_obj.increment(status,False)       try:        bytes_sent = int(line_dict['bytes_sent'])       except ValueError:        bytes_sent = 0      host_info_obj.increment(bytes_sent,True)    return self.report_dict   def return_sorted_list(self,true_dict):    '''計算各個狀態次數、流量總量,請求的總次數,并且計算各個狀態的總量 并生成一個正真的字典,方便排序'''    for host_key in true_dict :      host_value = true_dict[host_key]      times = host_value.get_value('times')       self.total_request_times = self.total_request_times + times       size = host_value.get_value('size')       self.total_traffic = self.total_traffic + size        o200 = host_value.get_value('200')      o404 = host_value.get_value('404')      o500 = host_value.get_value('500')      o403 = host_value.get_value('403')      o302 = host_value.get_value('302')      o304 = host_value.get_value('304')      o503 = host_value.get_value('503')       true_dict[host_key] = {'200':o200,'404':o404,'500':o500,'403':o403,'302':o302,'304':o304,                   '503':o503,'times':times,'size':size}       self.total_200 = self.total_200 + o200      self.total_404 = self.total_404 + o404      self.total_500 = self.total_500 + o500      self.total_302 = self.total_302 + o302      self.total_304 = self.total_304 + o304      self.total_503 = self.total_503 + o503     sorted_list = sorted(true_dict.items(),key=lambda t:(t[1]['times'],t[1]['size']),reverse=True)    return sorted_list class Main(object):  def main(self) :    '''主調函數'''    display_format = displayFormat()    arg_length = len(sys.argv)    if arg_length == 1 :      display_format.error_print()    elif arg_length == 2 or arg_length == 3:      infile_name = sys.argv[1]      try :        infile = open(infile_name,'r')        if arg_length == 3 :          lines = int(sys.argv[2])        else :          lines = 0      except IOError,e :        print        print e        display_format.error_print()      except ValueError :        print        print "Please Enter A Volid Number !!"        display_format.error_print()    else :      display_format.error_print()     fileAnalysis_obj = fileAnalysis()    not_true_dict = fileAnalysis_obj.generate_log_report(infile)    log_report = fileAnalysis_obj.return_sorted_list(not_true_dict)    total_ip = len(log_report)    if lines :      log_report = log_report[0:lines]    infile.close()     print    total_traffic = display_format.format_size(fileAnalysis_obj.total_traffic)    total_request_times = fileAnalysis_obj.total_request_times    print 'Total IP: %s  Total Traffic: %s  Total Request Times: %d'        % (total_ip,total_traffic,total_request_times)    print    display_format.head()    display_format.transverse_line()     for host in log_report :      times = host[1]['times']      times_percent = (float(times) / float(fileAnalysis_obj.total_request_times)) * 100      print display_format.formatstring % (host[0],                         display_format.format_size(host[1]['size']),                         times,str(times_percent)[0:5],                         host[1]['200'],host[1]['404'],                         host[1]['500'],host[1]['403'],                         host[1]['302'],host[1]['304'],host[1]['503'])                             if (not lines) or total_ip == lines :      display_format.transverse_line()      print display_format.formatstring % (total_ip,total_traffic,                          total_request_times,'100%',                         fileAnalysis_obj.total_200,                         fileAnalysis_obj.total_404,                         fileAnalysis_obj.total_500,                          fileAnalysis_obj.total_403,                         fileAnalysis_obj.total_302,                          fileAnalysis_obj.total_304,                         fileAnalysis_obj.total_503)    display_format.execut_time() if __name__ == '__main__':  main_obj = Main()  main_obj.main()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频免费观看| 欧美老妇交乱视频| 日韩一区二区在线视频| 亚洲美女在线看| 国精产品一区一区三区有限在线| 欧美亚洲激情视频| 懂色aⅴ精品一区二区三区蜜月| 久久精品国产一区二区三区| 国产成人精品久久二区二区91| 成人国产精品色哟哟| 欧美精品xxx| 欧美日韩一区二区在线播放| 丝袜美腿精品国产二区| 亚洲国语精品自产拍在线观看| 国产成人精品免高潮在线观看| 91精品中国老女人| 日韩欧美高清在线视频| 日韩精品中文字幕在线播放| 97在线视频免费| 性欧美亚洲xxxx乳在线观看| 日韩免费精品视频| 成人综合国产精品| 亚洲精品福利资源站| 国产精品va在线播放我和闺蜜| 欧美午夜激情在线| 日韩视频永久免费观看| 亚洲乱码国产乱码精品精| 欧美成人精品三级在线观看| 51久久精品夜色国产麻豆| 日韩精品丝袜在线| 92福利视频午夜1000合集在线观看| 国产精品高潮呻吟久久av无限| 午夜精品一区二区三区在线| 2020欧美日韩在线视频| 性色av一区二区咪爱| 欧美福利视频在线| 日韩av快播网址| 综合136福利视频在线| 这里只有精品视频在线| 国产精品久久中文| 久久久久国产视频| 国产精品成人观看视频国产奇米| 亚洲伊人第一页| 成人在线小视频| 精品亚洲夜色av98在线观看| 久久精品亚洲国产| 久久精品国产成人| 欧美激情亚洲自拍| 国产精品流白浆视频| 91香蕉嫩草神马影院在线观看| 91经典在线视频| 在线播放精品一区二区三区| 日韩av网站导航| 国产美女精品免费电影| 性色av一区二区三区| 久久久久久久国产精品视频| 日韩欧美主播在线| 日韩最新在线视频| 一区二区欧美在线| 欧美午夜视频在线观看| 97视频com| 国产精品午夜一区二区欲梦| 国产成人精品视| 亚洲人成电影在线观看天堂色| 97成人精品视频在线观看| 久久精品国产2020观看福利| 欧美日韩成人精品| 日韩资源在线观看| 色综合老司机第九色激情| 97在线精品国自产拍中文| 亚洲色图18p| 日韩视频在线观看免费| 精品国产电影一区| 国产成人在线视频| 国产日韩在线看片| 久久久av电影| 国产成人91久久精品| 亚洲一区中文字幕在线观看| 亚洲a级在线播放观看| 亚洲精品国产拍免费91在线| 精品无人区乱码1区2区3区在线| 欧美大片免费观看| 国产高清视频一区三区| 狠狠做深爱婷婷久久综合一区| 日韩大片免费观看视频播放| 欧美一区二区三区精品电影| 久久天堂av综合合色| xxx成人少妇69| xxxxx成人.com| 亚洲国产成人在线播放| 91精品国产自产在线观看永久| 蜜臀久久99精品久久久久久宅男| 91在线免费观看网站| 欧美日韩亚洲一区二| 欧美野外wwwxxx| 欧美日本精品在线| 黄色91在线观看| 91国自产精品中文字幕亚洲| 亚洲国产另类 国产精品国产免费| 欧美成人午夜免费视在线看片| 国产精品一区二区性色av| 亚洲精品国产精品乱码不99按摩| 国产精品日韩电影| 亚洲成人免费在线视频| 精品丝袜一区二区三区| 国产丝袜精品第一页| 精品一区二区三区四区在线| 久久免费视频这里只有精品| 欧美成人精品不卡视频在线观看| 欧美日韩在线观看视频小说| 国语自产精品视频在线看一大j8| 影音先锋日韩有码| 日韩欧美在线第一页| 国产精品丝袜久久久久久高清| 成人在线精品视频| 亚洲影院在线看| 日韩免费av一区二区| 精品福利樱桃av导航| 欧美精品激情在线| 美日韩在线视频| 欧美日韩国产成人| 亚洲视频国产视频| 精品久久在线播放| 自拍亚洲一区欧美另类| 日韩av日韩在线观看| 亚洲色图综合久久| 日本一区二区三区四区视频| 国产日本欧美一区| 日韩一区二区av| 国产精品久久久久久久久久久久| 欧美一区二三区| 国产精品视频白浆免费视频| 亚洲美腿欧美激情另类| 国产精品欧美一区二区| 国产大片精品免费永久看nba| 98精品国产自产在线观看| 最近2019中文字幕在线高清| 欧美大胆a视频| 久久久久久久国产| 色樱桃影院亚洲精品影院| 97色在线观看| 亚洲国产精品99久久| 在线看福利67194| 亚洲第一区在线| 色综久久综合桃花网| 午夜精品福利在线观看| 久久久久成人精品| 亚洲韩国日本中文字幕| 国产精品劲爆视频| 2020国产精品视频| 成人黄色av免费在线观看| 亚洲一区二区福利| 亚洲最大成人网色| 96精品视频在线| 92国产精品久久久久首页| 亚洲成色999久久网站| 国产精品成人免费视频| 国产精品久久9| 在线亚洲欧美视频| 日韩综合中文字幕| 亚洲美女av网站| 久久久亚洲国产天美传媒修理工| 亚洲精品在线91| 欧洲成人午夜免费大片|