2016-12-16 56 views
-1

我想從snort日誌文件中提取唯一的IP地址,並將它們存儲在一個單獨的文件中。如果存在,那麼就忽略它。但是輸出也顯示重複的IP地址。我如何防止這種情況?python程序提取唯一的IP地址並保存到另一個文件

這是我的代碼:

#!/usr/bin/python 
import re 
lst = [] 
lst2 = [] 
lstb = [] 
logfile = open('/var/log/snort/alllogs', 'r') 
blist = open('blacklist', 'ab+') 
for lines in logfile.readlines(): 
lines = lines.rstrip() 
badip = re.findall(r'[0-9]+(?:\.[0-9]+){3}',lines) 
if badip is not None and badip not in lst: 
    lst.append(badip) 
for ip in lst: 
    addr = ",".join(ip) 
if ',' in addr: 
    s = addr.split(',') 
    for ip in s: 
     addr = "".join(ip) 
     if addr is not '': 
      lst2.append(addr) 
     else: 
      if addr is not '': 
       lst2.append(addr) 
for i in blist: 
    lst2.append(i.strip()) 
for i in lst2: 
    if i not in lstb: 
    blist.write(i+'\n')' 

結果是:

192.168.12.10 
192.168.1.120 
192.168.1.120 
192.168.12.10 

回答

0

您可以在列表中去掉重複的這一個班輪:

lst2 = list(set(lst2)) 

我沒有看到你填寫LSTB,這可能就是你的解決方案不起作用。

如果你想解決您的解決方案考慮這樣的事情:

for i in lst2: 
     if i not in lstb: 
     blist.write(i+'\n') 
     lstb.append(i) 
+0

我只是錯過了它。太差 謝謝你吉爾維耶夫提前 –

+0

@RAZHamraz你應該接受答案,如果它解決了你的問題。 – giliev

+0

確定它修復了giliev,但是當我再次運行該程序時,它會將重複的IP地址添加到黑名單文件中。第一個程序運行後 輸出: 貓黑名單 192.168.12.10 192.168.1.120 第二個程序運行後 輸出: 貓黑名單 192.168.12.10 192.168.1.120 192.168.12.10 192.168.1.120 我只是卡住了我在這裏錯過的東西☹ –

1

您正在檢查:

if i not in lstb 

但LSTB在代碼中從未使用過。

+1

你是對的,當然,但爲什麼地球上沒有的OP做了一些真的很簡單的調試與此找到自己?發佈一個問題並坐下來等待別人告訴你什麼是錯誤,然後海報不會學習如何調試。嘆。 – barny

+0

是的,你是對的。但有時人們只是卡住了barny –

相關問題