2011-12-11 7 views
1

私はPythonには新しく、正規表現によるログ解析のチュートリアルをいくつか行ってきました。以下のコードでは、ログを解析し、リモートIPがサーバーに接続してファイルを作成することができます。作成されたout.txtファイルに重複IPを排除する部分が欠けています。 おかげIPのためのPythonログ解析

import re 
import sys 

infile = open("/var/log/user.log","r") 
outfile = open("/var/log/intruders.txt","w") 

pattern = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" 
regexp = re.compile(pattern, re.VERBOSE) 

for line in infile: 
    result = regexp.search(line) 
    if result: 
    outfile.write("%s\n" % (result.group())) 

infile.close() 
outfile.close() 

答えて

5

あなたはset()で、これまでに見られた結果を保存し、まだ見られていないだけで、書き込みアウトの結果することができます。このロジックは、既存のコードに簡単に追加できます。

import re 
import sys 

seen = set() 

infile = open("/var/log/user.log","r") 
outfile = open("/var/log/intruders.txt","w") 

pattern = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" 
regexp = re.compile(pattern, re.VERBOSE) 

for line in infile: 
    mo = regexp.search(line) 
    if mo is not None: 
    ip_addr = mo.group() 
    if ip_addr not in seen: 
     seen.add(ip_addr) 
     outfile.write("%s\n" % ip_addr) 

infile.close() 
outfile.close()