2012-10-05 3 views
0

내가 사용하려고 파이썬 파이썬 필터를 사용하여 실제 사람의 접근 기록을 달성하는 방법 때문에,파이썬 필터 로그 파일

Thu Oct 4 23:14:40 2012 [pid 16901] CONNECT: Client "66.249.74.228" 
Thu Oct 4 23:14:40 2012 [pid 16900] [ftp] OK LOGIN: Client "66.249.74.228", anon  password "[email protected]" 
Thu Oct 4 23:17:42 2012 [pid 16902] [ftp] FAIL DOWNLOAD: Client "66.249.74.228", "/pub/10.5524/100001_101000/100039/Assembly-2011/Pa9a_assembly_config4.scafSeq.gz", 14811136 bytes, 79.99Kbyte/sec 
Fri Oct 5 00:04:13 2012 [pid 25809] CONNECT: Client "66.249.74.228" 
Fri Oct 5 00:04:14 2012 [pid 25808] [ftp] OK LOGIN: Client "66.249.74.228", anon password "[email protected]" 
Fri Oct 5 00:07:16 2012 [pid 25810] [ftp] FAIL DOWNLOAD: Client "66.249.74.228", "/pub/10.5524/100001_101000/100027/Raw_data/PHOlcpDABDWABPE/090715_I80_FC427DJAAXX_L8_PHOlcpDABDWABPE_1.fq.gz", 14811136 bytes, 79.99Kbyte/sec 
Fri Oct 5 00:13:19 2012 [pid 27354] CONNECT: Client "1.202.186.53" 
Fri Oct 5 00:13:19 2012 [pid 27353] [ftp] OK LOGIN: Client "1.202.186.53", anon password "[email protected]" 
Fri Oct 5 00:13:33 2012 [pid 27355] [ftp] FAIL DOWNLOAD: Client "1.202.186.53", "/pub", 0.00Kbyte/sec 
Fri Oct 5 00:26:04 2012 [pid 341] [ftp] OK DOWNLOAD: Client "210.72.156.68", "/pub/10.5524/100001_101000/100030/RNA-Seq/Mgo_2.fq.gz", 1985229528 bytes, 85.87Kbyte/sec 
Fri Oct 5 00:55:45 2012 [pid 2766] CONNECT: Client "157.82.250.217" 
Fri Oct 5 00:55:45 2012 [pid 2765] [ftp] OK LOGIN: Client "157.82.250.217", anon password "[email protected]" 
Fri Oct 5 00:56:05 2012 [pid 2767] [ftp] FAIL DOWNLOAD: Client "157.82.250.217", "/pub/10.5524/100001_101000/100036/Gene_catalogue/Gene_catalogue.pep", 1638400 bytes, 81.81Kbyte/sec 
Fri Oct 5 00:57:27 2012 [pid 3056] CONNECT: Client "157.82.250.217" 
Fri Oct 5 00:57:27 2012 [pid 3055] [ftp] OK LOGIN: Client "157.82.250.217", anon password "[email protected]" 

로그 파일이 일부 로봇 액세스 레코드가 같은 로그 파일에 대한 필터를 만들 수 있습니다. 나는 이미 주간 기록을 얻기 위해 필터를 만들었으므로 그 안에 추가하는 것을 도울 수있다. 당신이 자신의 암호로보고, 로봇을, 당신의 시스템을 사용하여 실제로 해당 클라이언트를 결정하는 경우

import time 
f= open("/opt/CLiMB/Storage1/log/vsftp.log") 
def OnlyRecent(line): 
    if time.strptime(line.split("[")[0].strip(),"%a %b %d %H:%M:%S %Y")> time.gmtime(time.time()-(60*60*24*7)): 
     return True 
    return False 
filename= time.strftime('%Y%m%d')+'.log' 
f1= open(filename,'w') 
for line in f: 
    if OnlyRecent(line): 
      print line 
      f1.write(line) 
f.close() 
f1.close() 

답변

0

([email protected] 실제 로봇 모양), 당신은 단지 문자열을 분할 할 수 있습니다 두 번째 부분에 로봇 전자 메일이 포함되어 있는지 확인하십시오.

# Add additional robot e-mails here 
robot_emails = ["[email protected]"] 

def isRobotRecord(line): 

    for email in robot_emails: 
     if email in line.split("Client")[1]: 
      return True 
     else: 
      return False 
+0

이메일 서 :

사용자 그룹 이벤트는, 다음 각 그룹에 대해이 이벤트에 있는지 확인해야한다 "서명"와 같은 로봇에 의해 남아? – AntiGMO

+0

어떻게이 함수를 스크립트에 추가 할 수 있습니까? f에 행 추가 : if OnlyRecent (행) : isRobotRecord (행) 인 경우 : f1.write (행) 행을 인쇄 하시겠습니까? – AntiGMO

+0

@JesseSiu, 아니요, 'OnlyRecent (행) 인 경우 isRobotRecord (행) : print line' 또는 약간 더 짧게 작성할 수 있습니다 :'OnlyRecent (행)이고 isRobotRecord (행) :'(둘 다 하나의 라인에서 조건). – aga

0

이벤트를 어떤 식별자로 그룹화 할 수 있습니다. 나는 pid에 대해 생각했지만 로그에있는 모든 라인에는 다른 pid가있는 것 같습니다. CONNECT: Client "[IP]"을 찾으면 모든 그룹에 대해 IP 주소를 사용하고 새 그룹을 시작할 수 있지만 일부 IP 주소 클라이언트에서 한 번에 많은 세션이 있으면 실패합니다. 세션 식별자가 없으면 하나의 세션 (그룹)으로 사용되는 행을 결정하기 어렵습니다. 대한 "anon password "[email protected]"