#!/usr/bin/python
# -*- コーディング: utf-8 -*-
インポートシステム
from optparse import OptionParser
''
access.log
内の IP アドレスの数の統計に関するテストです。
''
試してみてください:
f = open('/data/proclog/log/squid/access.log')
IOError を除く、e:
印刷 "ファイルを開けません:%s" %(e)
def log_report(フィールド):
''
アクセスログのフィールドを返します
''
フィールド == "ip" の場合:
f]
の行に対して [line.split()[2]] を返します。
フィールド == "url" の場合:
f]
の行に対して [line.split()[6] を返します]
def log_count(フィールド):
''
{field:number}
のような辞書を返します
''
フィールド2 = {}
フィールド = log_report(フィールド)
フィールドの field_tmp の場合:
if field_tmp in field2:
フィールド2[field_tmp] += 1
その他:
フィールド2[field_tmp] = 1
フィールドを返す 2
def log_sort(field,number = 10,reverse = True):
''
ソートされたフィールドを出力して出力します
''
for v insorted(log_count(field).iteritems(),key = lambda x:x[1] , reverse = reverse )[0:int(number)]:
print v[1],v[0]
if __name__ == "__main__":
パーサー =OptionParser(usage="%prog [-i|-u] [-n num | -r]" ,version = "1.0")
Parser.add_option('-n','--number',dest="number",type=int,default=10,help="出力の先頭行を印刷")
Parser.add_option('-i','--ip',dest="ip",action = "store_true",help="アクセスログのIP情報を出力")
Parser.add_option('-u','--url',dest="url",action = "store_true",help="アクセスログのURL情報を出力")
Parser.add_option('-r','--reverse',action = "store_true",dest="reverse",help="出力を反転 ")
(オプション,引数) = parser.parse_args()
len(sys.argv) の場合
parser.print_help()
options.ip と options.url の場合:
parser.error(' -i と -u は同時に実行できません ')
options.ip の場合:
Log_sort("ip", options.number, True および options.reverse または False)
options.url の場合:
Log_sort("url", options.number, True および options.reverse または False)
f.close()
効果は次のとおりです: