python實現讀取日誌

2021-10-25 07:22:41 字數 1908 閱讀 4633

我們測試的過程中,如果遇到需要讀取日誌該怎麼通過python實現呢。測試小白的我寫了個python指令碼來實現讀取伺服器上的日誌。下面的例子是我的乙個測試需求:讀取日誌中的某個字段例如欄位a和我的預期結果作比較

實現之前我們需要知道伺服器的位址、日誌檔案所在的路徑、日誌的名稱以及日誌的結構,最好先自己擼一條日誌看一下。大概思路是

連線伺服器;

確定自己上報日誌所在的路徑,以及自己需要的日誌在哪個日誌檔案下;

拿到該條日誌,讀取自己需要的字段(確定日誌格式在這就尤為重要)。

# 連線伺服器

defconnect_server

(server_ip, username, password)

:try

: client = paramiko.sshclient(

) client.set_missing_host_key_policy(paramiko.autoaddpolicy())

# print('------------開始連線伺服器(%s)-----------' % server_ip)

client.connect(server_ip,

22, username=username, password=password)

# print('------------認證成功!.....-----------')

except exception:

print

(f'連線遠端linux伺服器(ip:)發生異常!請檢查使用者名稱和密碼是否正確!'

)return client

#讀取日誌檔案

defread_log

(upload_ts)

:#a為我需要取的字段

a ='' upload_time_arr = time.localtime(upload_ts)

#因為我的日誌名稱為20201027.log

#確定上報的日誌所在的日誌檔名

log_name = time.strftime(

"%y%m%d%h"

, upload_time_arr)

+'.log'

print

(f'log_name = '

)#連線伺服器

client = connect_server(

'伺服器位址'

,'使用者名稱'

,'密碼'

)#通過命令讀日誌

cmd =

'cat 日誌檔案所在的路徑'

+ log_name

print

(cmd)

stdin, stdout, stderr = client.exec_command(cmd)

log_text =

str(stdout.read(

), encoding=

'utf8'

)#日誌檔案下若有多條日誌,將日誌之間用\n分隔

log_arr = log_text.split(

'\n'

)#檢查日誌格式,不合規的日誌丟棄

for s in

reversed

(log_arr)

: log_info = s.split(

'\t')if

len(log_info)

<5:

continue

#我需要的字段在最後乙個元素中,是個json格式的報文,所以轉成字典方便取值

dic = json.loads(log_info[4]

) a = dic[

'a']

print

(f'讀取到日誌中的a = '

) client.close(

)

日誌讀取 利用Python實現Web日誌分析

平時應急響應的時候可以利用一些小工具來使得工作事半功倍,看網上有一些比較優秀的web日誌分析工具。用過一次奇安信的360星圖日誌分析工具,該款工具會根據內建的一些攻擊規則生成分析報告。但是這個工具個性化還是有欠缺的,比如我想搜尋 日誌狀態碼為404的,請求體中帶有phpinfo的,所有就突發奇想寫了...

python讀取日誌檔案

下面是我們的日誌檔案,裡面都是一條條這樣的資料 為了將讀取的日誌檔案存入mysql,我們需要讀取日誌檔案,然後按照指定格式切割出需要的資料 表字段會是time,ip level,messages 這個可以處理大檔案,因此每次只讀取一行 def read log 讀取日誌檔案,進行資料重組,寫入mys...

python讀取日誌,存入mysql

2 在mysql中,使用sql查詢出現次數最多的ip,以及該ip的訪問次數。這裡寫 片 print 開始提取。print 已完成 count 行。count 1database coding utf 8 from sqlalchemy import create engine,table,colum...