用python指令碼分析apache訪問日誌

2021-10-07 17:27:02 字數 2396 閱讀 6870

1.我有乙個名為access_log的apache的日誌檔案,為了快速能知道這個日誌檔案中有哪些ip訪問了這個apache服務並且每個ip訪問了多少次,我還想知道客戶用了哪些瀏覽器訪問該apache服務並且這個瀏覽器用的次數。

2(1)我用函式式程式設計的方法。

import re

defcount

( fname, what)

: r_d =

patt = re.

compile

(what)

with

open

(fname)

as f1:

for line in f1:

m = patt.search(line)

if m:

key = m.group(

) r_d[key]

=r_d.get(key,0)

+1return r_d

if __name__ ==

'__main__'

: fname =

'access_log'

ip =

'^(\d+\.)\d+'

br =

'firefox|msie|chrome'

a1 =

(count(fname,ip)

) a1 =

list

(a1.items())

a2 =

(count(fname,br)

) a2 =

list

(a2.items())

a1.sort(key=

lambda seq:seq[-1

],reverse=

true

) a2.sort(key=

lambda seq:seq[-1

],reverse=

true

)for i in a1:

print

('%s %s次'

% i)

for i in a2:

print

('%s %s次'

% i)

效果如下:

(2)opp物件程式設計的方法

import re

class

countpatt

:def

__init__

(self,fname)

: self.fname=fname

defcount

(self,what)

: r_d =

patt = re.

compile

(what)

with

open

(self.fname)

as f1:

for line in f1:

m = patt.search(line)

if m:

key = m.group(

) r_d[key]

=r_d.get(key,0)

+1return r_d

if __name__ ==

'__main__'

: fname =

'access_log'

ip =

'^(\d+\.)\d+'

br =

'firefox|msie|chrome'

a1 = countpatt(fname)

a1 = a1.count(ip)

a2 = countpatt(fname)

a2 = a2.count(br)

a1 =

list

(a1.items())

a2 =

list

(a2.items())

a1.sort(key=

lambda seq:seq[-1

],reverse=

true

) a2.sort(key=

lambda seq:seq[-1

],reverse=

true

)for i in a1:

print

('%s %s次'

% i)

for i in a2:

print

('%s %s次'

Repo指令碼分析

repo指令碼是作為整個repo工具的入口,只要負責repo環境的初始化和轉殖repo庫。repo有兩處if name main 位於開始部分主要是給shell執行用的,位於末尾的部分是給python執行用的。來看看repo引導指令碼的前幾行。1 bin sh 2 3 repo url git 4 ...

鏈結指令碼分析

鏈結三要素 鏈結順序,鏈結位址,載入位址 1.連線順序的問題 倘若有鏈結指令碼,則會按照鏈結指令碼的規則進行鏈結。例如 sections second x30000000 at 4096 這個規則中定義了兩個大段,first和second。first的鏈結順序為head.o init.o nand....

python指令碼分析apache訪問日誌

編寫count patt.py指令碼,實現乙個apche日誌分析指令碼 統計每個客戶端訪問apache伺服器的次數 將統計資訊通過字典的方式顯示出來 分別統計客戶端是firefox和msie的訪問次數 分別使用函式式程式設計和物件導向程式設計的方式實現 collections是python內建的乙個...