파일 (아래 예제 데이터)에는 한 줄에 특정 텍스트를 검색하는 비슷한 출력 그룹이 있습니다. 각 텍스트 그룹 내에서 issuerID
과 subjectID
이 모두있는 경우 sourceIP
및 destIP
과 함께이 두 항목을 인쇄하십시오. 그렇지 않은 경우 건너 뛰고 다음으로 건너 뜁니다. 아래 코드는 작동하지만, issuerID
과 subjectID
이 일치하는 경우에만 원하는 정보를 인쇄하는 논리를 추가하려고합니다.관련 데이터 그룹에서 구문 분석 및 인쇄
다음은 스크립트의 현재 반복입니다.
#!/usr/bin/python
import re
sourceIP = 'Source IP:'
destIP = 'Destination IP:'
issuerID = 'Issuer ID:'
subjectID = 'Subject ID:'
for line in open('data.txt', 'r'):
line = line.strip()
if line.startswith(sourceIP):
sourceIPline = line
elif line.startswith(destIP):
destIPline = line
elif line and line.startswith(issuerID):
issuerDomain = re.search("www[\w.com]+", line)
elif line and line.startswith(subjectID):
subjectDomain = re.search("www[\w.net]+", line)
print (sourceIPline)
print (destIPline)
print issuerDomain.group()
print subjectDomain.group()
print
값이 기준을 충족하지 못하는 데이터 세트로 코드를 실행하면 오류가 발생합니다. 나는이 그룹이 무시되고 계속 나아가는 것을 선호 할 것이다.
$ ./dparser.py
Source IP: 10.0.0.126
Destination IP: 8.8.8.8
www.domain.com
www.domain.net
Source IP: 10.0.0.126
Destination IP: 8.8.4.4
www.domain2.com
Traceback (most recent call last):
File "./dparser.py", line 22, in <module>
print subjectDomain.group()
AttributeError: 'NoneType' object has no attribute 'group'
다음은 두 그룹으로 구성된 샘플 데이터 세트입니다.
-------------------------------
Template ID is 45841
Application Label: 443
Source IP: 10.0.0.126
Destination IP: 8.8.8.8
Source Port: 38946
Dest Port: 443
flowStartTime: 2013-12-30 20:20:21
flowEndTime: 2013-12-30 20:21:37
flowEndReason: 3
Protocol: 6
Octet Total Count: 8497
Rev Octet count: 28802
Packet Total Count: 30
Rev Packet Total Count: 32
TCP Sequence Number: 561150853
Initial TCP Flags: S
Union TCP Flags: APF
Reverse TCP Sequence Number: 4118697381
Reverse Initial TCP Flags: AS
Reverse Union TCP Flags: APF
SSL Server Cipher: 49171
-- X.509 Cert 0 (v.2) ---
Issuer ID: 3 Val: www.domain.com
Subject ID: 3 Val: www.domain.net
Valid Not Before: 131015000000Z
Not Valid After: 140211235959Z
Public Key Length: 0
--- End of Cert 0 ---
-------------------------------
Template ID is 45841
Application Label: 443
Source IP: 10.0.0.126
Destination IP: 8.8.4.4
Source Port: 42529
Dest Port: 443
flowStartTime: 2013-12-30 20:20:22
flowEndTime: 2013-12-30 20:21:37
flowEndReason: 3
Protocol: 6
Octet Total Count: 8341
Rev Octet count: 26678
Packet Total Count: 27
Rev Packet Total Count: 30
TCP Sequence Number: 3052048930
Initial TCP Flags: S
Union TCP Flags: APF
Reverse TCP Sequence Number: 101975511
Reverse Initial TCP Flags: AS
Reverse Union TCP Flags: APF
SSL Server Cipher: 49171
-- X.509 Cert 0 (v.2) ---
Issuer ID: 3 Val: www.domain2.com
Subject ID: 3 Val: Some Subject
Valid Not Before: 130727000000Z
Not Valid After: 140118000000Z
Public Key Length: 0
--- End of Cert 0 ---
정규식 팁 주셔서 감사합니다! – Astron
이것을 다시 읽으면, 나는 완전히 명확하지 않다는 것을 깨닫습니다. '[A-Z]'는 A-Z의 모든 문자와 일치한다는 의미입니다. '\ w'는'[A-Za-z0-9]'와 영어 이외의 일부 문자와 거의 같습니다. '[\ w.com]'은'\ w' 또는'.' 또는'c' 또는'o' 또는'm'을 의미합니다. –