2016-12-16 34 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 –

相关问题