2013-10-15 2 views
0

У меня есть файл журнала брандмауэра, который выглядит следующим образом:Синтаксический большой файл журнала - Python

«Нет.», «Время», «Источник», «Пункт назначения», «Протокол», «Info» «1», «0.000000», «172.16.113.168», «172.16.112.50», «TELNET», «Telnet Data ...» «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 Data ... "" 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

телнет [ACK] = Seq 3 Ack = 3 Win = 32120 Len = 0"

Я хочу, чтобы иметь возможность запускать файл по его имени (я использую Linux), например.

log1.py logfile.csv (имя программы, за которым следует имя файла журнала) и получить следующий вывод:

$ log1.py logfile.csv Source 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 

И еще одна очень полезная особенность, которую я хотел бы иметь, когда я запускаю го e с исходным 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.2 13 packets.csv Источник IP Destination 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 
+0

Если вы ознакомились с библиотекой 'pandas'; это можно сделать в нескольких строках кода. http://pandas.pydata.org/pandas-docs/version/0.15/tutorials.html – Dilawar

ответ

0

синтаксического анализа лог-файл и создать список списков, где каждый вложенный список, содержащий (Source IP, IP назначения, протокол, граф).

Теперь вы должны применить функцию filter к этому внешнему списку. Ответ, если вам нужно уточнить.

+0

Thanks Palash Я считаю, что я создал список списка «itlist» содержит (исходный ip, целевой IP-адрес, протокол), как я могу получить счет, нужно ли мне настроить перерыв управления, чтобы перебрать все элементы и подсчитать каждый? Я знаю теоретическую идею о том, что мне нужно, я просто не могу заставить программу сделать это. ЛОЛ. –

+0

О, я неправильно понял. у вас нет __count__, готового к вам. Только путь ** Я вижу **, чтобы перебирать отсортированные списки и рассчитывать на лету. Я считаю, что файл журнала статичен и не обновляется во время работы над ним. –

Смежные вопросы