2012-08-30 2 views
-3

파이썬으로 특정 정보를 분석하는 방법을 찾고 있습니다.Python으로 로그인 정보 파싱

성공적인 네트워크 로그온 : : 그 입력에서 특정 데이터를 추출해야

User Name:  chango 

    Domain:   world 

    Logon ID:    (0x0,0x4BBE4382) 

    Logon Type:  3 

    Logon Process: NtLmSsp 

    Authentication Package: NTLM 

    Workstation Name:  computer 

    Logon GUID:  - 

여기에 내가/추출을 구문 분석 할 필요가 입력됩니다. 특히 username, domain, login_ID, 로그인 유형, 로그인 프로세스, 인증 패키지 및 워크 스테이션 이름.

본질적으로 나는 각 값을 별도의 변수에 넣어야합니다. 나는 이것을 파싱하고 내가 필요한 것을 추출하는 방법을 알아내는 데 어려움을 겪고있다.

도와주세요.

코드 : 당신이하려고하는 모든 키/값 쌍에 텍스트를 구문 분석하는 경우

def parse_xml(file): 
    File_Read = open(file, "rb") 
    mess =[] 
    try: 

     tree = parse(File_Read) 
     root = tree.getroot() 

     for EventItem in root.findall("EventLogItem"): 
      try: 
       if "540" in EventItem.find("EID").text: 

        date = EventItem.find("genTime").text 

        message = EventItem.find("message").text 

        destination = re.findall(r'Target Server Name:\t(.+)\r', message) 
        #destination = re.findall(r'(Target Server Name:)', message) 
        #s = re.split(r'\n\t', message) 
        mess.append(s) 
      except: pass  

    except: pass 
    return mess 
+0

어떻게 코드를 여기에 붙여 넣을 수 있습니까? [code] [/ code]입니까? –

+0

시프트가없는 ~'code \'가 없습니다. –

+0

질문 편집기에 형식 버튼이 있습니다. 코드를 선택하고 중괄호를 눌러 4 칸 들여 쓰기를 수행하십시오. 의견에 넣지 마십시오. 아무도 내 코드에서 볼 수 있듯이 – jdi

답변

1

난 당신이 다음 샘플 코드와 샘플 입력과 하나의 상관 관계를 볼 수 있지만하지 않습니다 아마도 간단한 나누기를 할 수 있습니다. 이 경우 키는 항상 다음과 같이 구분됩니다. :

raw = """ 
    User Name:  chango 
    Domain:   world 
    Logon ID:    (0x0,0x4BBE4382) 
    Logon Type:  3 
    Logon Process: NtLmSsp 
    Authentication Package: NTLM 
    Workstation Name:  computer 
    Logon GUID:  - 
""" 

parsed = dict(map(str.strip, line.split(':', 1)) for line in raw.split('\n') if line.strip()) 

print parsed 

{'Authentication Package': 'NTLM', 
'Domain': 'world', 
'Logon GUID': '-', 
'Logon ID': '(0x0,0x4BBE4382)', 
'Logon Process': 'NtLmSsp', 
'Logon Type': '3', 
'User Name': 'chango', 
'Workstation Name': 'computer'} 

print parsed['User Name'] 
# chango 

username = parsed['User Name'] 
print username 
# chango 
+0

xml 파일을 가져 와서이 함수를 호출하여 구문 분석하는 별도의 주 함수가 있기 때문에 상관 관계가 없습니다. 따라서 원시 변수와 정확히 일치하는 "message"변수는 xml 파일의 내용에서 채워집니다. –

+0

이 jdi에 귀하의 의견을 보내 주셔서 감사합니다. 그것은 내가 찾고있는 것에 가깝지만 각 항목을 별도의 변수로 필요로합니다. 아마도 ":"로 나눌 수 있을까요? 그럼 내가 원하지 않는 내 문자열에서 작은 따옴표를 얻을 것이다. 다른 제안 사항이 있으십니까? –

+0

예 : 사용자 이름 = chango 도메인 = 세계 등 별도의 변수로 선언 된 값이 필요합니다. –

관련 문제