2016-11-25 5 views
0

누군가가 도움을 줄 수 있기를 바랍니다. 나는 로그는 다음과 같습니다 파이썬에 syslog 서버에서 보낸이 :정규식을 사용하여 파이썬 구문 분석 로그

{'Raw': 'Nov 26 00:23:07 TEST 23856434232342 (2016-11-26T00:23:07) http-proxy[2063]: Allow 1-Trusted 0-External tcp 192.168.0.1 2.3.4.5 57405 80 msg="HTTP Request" proxy_act="HTTP-TEST" op="POST" dstname="www.google.com" arg="/" sent_bytes="351" rcvd_bytes="1400" (HTTP-proxy-TEST-00)'} 

내가 IP 주소, dstname=, sent_bytes=dcvd_bytes=를 추출 할 수 있어야 가능한 구문 분석하면 JSON으로. REGEX (["'])(?:(?=(\\?))\2.)*?\1을 사용하여 큰 따옴표와 일치하지만 올바르게 작동하지 않습니다.

내가 필요한 데이터를 얻는 방법에 대한 아이디어가 있으십니까? 또는 위의 내용을 json으로 구문 분석하는 방법은 무엇입니까? IP를 가정

감사

답변

0

는 dstname sent_bytes 및 rcvd_bytes 그들에게 완벽하게 작동하는 모든

import re 
s = r"""{'Raw': 'Nov 26 00:23:07 TEST 23856434232342 (2016-11-26T00:23:07) http-proxy[2063]: Allow 1-Trusted 0-External tcp 192.168.0.1 2.3.4.5 57405 80 msg="HTTP Request" proxy_act="HTTP-TEST" op="POST" dstname="www.google.com" arg="/" sent_bytes="351" rcvd_bytes="1400" (HTTP-proxy-TEST-00)'}""" 

match = re.findall('(?:tcp |dstname=|sent_bytes=|rcvd_bytes=)"?([^\s"]+)', s) 
# match = ['192.168.0.1', 'www.google.com', '351', '1400'] 
(ip, dstname, sent_bytes, rcvd_bytes) = match 
# use this to parse to json 
+0

감사를 얻을 수 re.findall를 사용, 위해 항상. – AlanR