2014-09-10 2 views
0

로그 파일을 그놈의 시스템 로그 뷰어로 전달하는 DD-WRT 라우터가 있는데 제대로 작동합니다.라우터 로그 파일에서 시간 및 IP 주소 추출

Sep 9 20:41:17 192.168.1.1 kernel: [ 272.160000] ACCEPT IN=br0 OUT=ppp0 MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=192.168.1.5 DST=64.233.160.0 LEN=104 TOS=0x00 PREC=0x00 TTL=63 ID=31811 DF PROTO=UDP SPT=42633 DPT=3000 LEN=84 

가 어떻게 그냥 Date, time, ACCEPT, SRC=IPDST=IP이를 줄일 수 있습니다 : 내가 가진 문제는 라우터는 내가 추적하려는 훨씬 더 많은 정보를 보내는입니까?

ACCEPTDROP 또는 REJECT 일 수 있습니다.

은 실험으로 나는 시도 :

sed 's/.*SRC=\([0-9.]\+\).*/\1/' -e 's/.*DST=\([0-9.]\+\).*/\1/' myrouter.log 

가했던 모든 SRC IP의 긴 목록 's의 다음 긴 목록 경우 DST IP 년대를 작성했다. 이상적으로 로그 뷰어에서 같은 줄에 가져 오기를 바랬습니다.

+0

긴 목록을 사용하여 빠르고 쉽게되는 곳이다 현재 (이 줄의 다른 정보 없음) 및 SRC가없는 줄의 목록이지만 DST는 줄을 바꾸라고 sed에게 요청했기 때문에 SRC + IP 만 있고 새 내용을 변경하기 직후입니다 (그렇지 않으면 변경되지 않습니다). SRC 내부) DST + IP 정보 만 유지합니다. – NeronLeVelu

답변

1

간단한 방법 :

awk '{print $1,$2,$3,$8,$12,$13}' myrouter.log 
Sep 9 20:41:17 ACCEPT SRC=192.168.1.5 DST=64.233.160.0 

가 라벨을 제거

awk '{split($12,a,"=");split($13,b,"=");print $1,$2,$3,$8,a[2],b[2]}' myrouter.log 
Sep 9 20:41:17 ACCEPT 192.168.1.5 64.233.160.0 
+0

완벽한 출력과 정확하게 내가 찾고 있던 것입니다. awk가 훨씬 잘 작동합니다. 고맙습니다. – Alan

0
sed -n 's/^\([a-zA-Z0-9 ]\{6,7\}[0-9:]\{8\} \).* \([ACCEPTDROPJ] \).*\(\([SRCDT]\{3\}=[0-9.]\{7,15\} *\)\{2\}\).*/\1\2\3/p' YourFile 

이 구조에 해당하지 않는 행을 필터링 할 -n을 사용합니다. 나머지는 순수한 패턴 매칭 및 그룹 정보가 같은 장소에 항상있는 경우

, 다른 도구를 (AWK는 특별히)는 SRC는이 경우 DST는 사실 라인에보다 SRC의