python指令碼分析apache訪問日誌

2021-10-03 07:27:26 字數 2311 閱讀 3237

編寫count_patt.py指令碼,實現乙個apche日誌分析指令碼:

統計每個客戶端訪問apache伺服器的次數

將統計資訊通過字典的方式顯示出來

分別統計客戶端是firefox和msie的訪問次數

分別使用函式式程式設計和物件導向程式設計的方式實現

collections是python內建的乙個集合模組,模組中提供了許多有用的集合類,其中counter類 是乙個簡單的計數器,以字典的鍵值對形式儲存,其中搜尋的元素作為鍵,出現的次數作為值

實現過程:

1.例項化乙個計數器

2.例項化正規表示式

3.將檔案以物件形式開啟

4.通過正規表示式查詢檔案每一行

5.如果找到結果

6.將結果新增到計數器,通過update方法更新原有資料

7.返回計數器

8.將檔案位址和正規表示式作為實參傳遞給函式

實現此案例需要按照如下步驟進行。

[root@localhost day08]# vim count_patt.py

#!/usr/bin/env python3

import re

import collections

#fname 檔案位址 patt 正規表示式

def count_patt(fname,patt):

counter = collections.counter()

cpatt = re.compile(patt)

with open(fname) as fobj:

for line in fobj:

m = cpatt.search(line)

if m:

counter.update([m.group()])

return counter

if __name__ == "__main__":

fname = "access_log.txt"

ip_patt = "^(\d+\.)\d+"

a = count_patt(fname,ip_patt)

print(a)

br_patt = "firefox|msie|chrome"

b = count_patt(fname,br_patt)

print(b)

實現此案例還可通過物件導向方式實現:

1.建立類countpatt

2.定義構造方法 建立正則物件

3.定義類方法

4.建立計數器物件

5.開啟文字檔案

6.通過正規表示式查詢檔案每一行

7.如果找到結果

8.將結果新增到計數器,通過update方法更新原有資料

9.返回計數器

10.將檔案位址和正規表示式作為實參傳遞給函式

[root@localhost day08]# vim count_patt2.py

#!/usr/bin/env python3

import re

import collections

import re

import collections

class countpatt:

def __init__(self,patt):

self.cpatt = re.compile(patt)

def count_patt(self,fname):

counter = collections.counter()

with open(fname) as fobj:

for line in fobj:

m = self.cpatt.search(line)

if m:

counter.update([m.group()])

return counter

if __name__ == "__main__":

fname = "access_log.txt"

ip_patt = "^(\d+\.)\d+"

br_patt = "firefox|msie|chrome"

ip = countpatt(ip_patt)

print(ip.count_patt(fname))

br = countpatt(br_patt)

print(br.count_patt(fname))

[root@localhost  root]# python3 count_patt.py

counter()

counter()

[root@localhost day08]# python3 count_patt2.py

counter()

counter()

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訪問日誌

1.我有乙個名為access log的apache的日誌檔案,為了快速能知道這個日誌檔案中有哪些ip訪問了這個apache服務並且每個ip訪問了多少次,我還想知道客戶用了哪些瀏覽器訪問該apache服務並且這個瀏覽器用的次數。2 1 我用函式式程式設計的方法。import re defcount f...