簡體   English   中英

解析大型日志文件-Python

[英]Parsing large log file - Python

我有一個防火牆日志文件,如下所示:

“編號”,“時間”,“源”,“目的地”,“協議”,“信息”“ 1”,“ 0.000000”,“ 172.16.113.168”,“ 172.16.112.50”,“ TELNET”,“ Telnet數據...“” 2“,” 0.000426“,” 172.16.112.50“,” 172.16.113.168“,” TELNET“,” Telnet數據...“” 3“,” 0.019849“,” 172.16.113.168“, “ 172.16.112.50”,“ TCP”,“ 21582> telnet [ACK] Seq = 2Ack = 2 Win = 32120 Len = 0”“ 4”,“ 0.530125”,“ 172.16.113.168”,“ 172.16.112.50”,“ TELNET“,” Telnet數據...“” 5“,” 0.530634“,” 172.16.112.50“,” 172.16.113.168“,” TELNET“,” Telnet數據...“” 6“,” 0.549962“,” 172.16.113.168“,” 172.16.112.50“,” TCP“,” 21582

telnet [ACK] Seq = 3 Ack = 3 Win = 32120 Len = 0“

我希望能夠通過文件名運行文件(我正在使用Linux),例如。

log1.py logfile.csv (程序名稱,后跟日志文件名稱),並獲得以下輸出:

$ log1.py logfile.csv源IP目標IP協議計數

  0.0.0.0 255.255.255.255 BOOTP 20 0.1.125.174 131.84.1.31 TCP 2 192.168.1.1 172.168.1.2 TCP 100 (............lots more here .....................) Oracle_89:a5:9f 3com_9c:b2:54 ARP 14 Total: 649787 

我想擁有的另一個非常有用的功能是當我使用源IP地址和目標IP地址運行程序時。 我希望輸出看起來類似於以下內容:

$ log1.py 172.16.112.50 logfile.csv

  Source IP Destination IP Protocol Count 172.16.112.50 135.13.216.191 IMF 4 SMTP 53 TCP 43 TELNET 35 (............lots more here .....................) 172.16.112.194 SMTP 7 TCP 42 TELNET 3745 Total: 38369 

最后,我希望能夠同時指定源IP地址和目標IP以及地址,並獲得以下輸出:

$ log1.py 172.16.112.50 202.77.162.213 packet.csv源IP目標IP協議計數

  172.16.112.50 202.77.162.213 ICMP 1 Portmap 5 RSH 9 SADMIND 1 TCP 30 TELNET 41 Total: 87 

我是一名初級系統管理員,實際上沒有太多的編程經驗(只是HTML),但是我已經開始學習,但是在過去的3天里,我一直在解決這個問題,到目前為止,這里是我的經驗:

# Function for validating IP address is valid or not 
def ip_validation(ip_address):
    ip_regex= re.match('^[\d]{1,3}[.][\d]{1,3}[.][\d]{1,3}[.][\d]{1,3}$', ip_address)
    return ip_regex
def filereader(file_name):
    file_dump= open(file_name,'r')
    for eachline in file_dump:
        line_a= eachline.replace('\"','') # removes all quotes from the file
        line_b= line_a.split(',') # Delimate each fild based on ','             
        src_ip= line_b[2] # Source IP
        dst_ip= line_b[3] # Destination IP
        prot= line_b[4] # Protocol
        eachline= src_ip, dst_ip, prot      
        itlist.append(eachline) 
        itlist.sort()
        print itlist

解析日志文件並創建列表列表,其中每個子列表包含(源IP,目標IP,協議,計數)。

現在,您只需要在此外部列表上應用過濾器功能。 如果需要進一步說明,請回復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM