2013-04-10 1 views
0

내 서버에서 얼마나 많은 클라이언트가 파일 (3 가지 유형)을 다운로드했는지 계산하고 싶습니다.어떻게 리눅스 스니퍼 결과를 즉시 파싱합니까?

내가 tshark를 설치하고 GET 요청 캡처해야 다음 명령을 실행 :

`./tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R'http.request.method == "GET"'` 

너무 스니퍼 일을 시작하고 매초마다 나는 새 행을 얻기를, 여기 결과입니다 :

0.000000 144.137.136.253 -> 192.168.4.7 HTTP GET /pids/QE13_593706_0.bin HTTP/1.1 
8.330354 1.1.1.1 -> 2.2.2.2 HTTP GET /pids/QE13_302506_0.bin HTTP/1.1 
17.231572 1.1.1.2 -> 2.2.2.2 HTTP GET /pids/QE13_382506_0.bin HTTP/1.0 
18.906712 1.1.1.3 -> 2.2.2.2 HTTP GET /pids/QE13_182406_0.bin HTTP/1.1 
19.485199 1.1.1.4 -> 2.2.2.2 HTTP GET /pids/QE13_302006_0.bin HTTP/1.1 
21.618113 1.1.1.5 -> 2.2.2.2 HTTP GET /pids/QE13_312106_0.bin HTTP/1.1 
30.951197 1.1.1.6 -> 2.2.2.2 HTTP GET /nginx_status HTTP/1.1 
31.056364 1.1.1.7 -> 2.2.2.2 HTTP GET /nginx_status HTTP/1.1 
37.578005 1.1.1.8 -> 2.2.2.2 HTTP GET /pids/QE13_332006_0.bin HTTP/1.1 
40.132006 1.1.1.9 -> 2.2.2.2 HTTP GET /pids/PE_332006.bin HTTP/1.1 
40.407742 1.1.2.1 -> 2.2.2.2 HTTP GET /pids/QE13_452906_0.bin HTTP/1.1 

무엇 결과 유형을 저장하고 다른 파일에 /pids/*****.bin과 같은 개수를 저장하려면해야합니다. 리눅스에서는 강력하지 않지만 1-3 행의 스크립트로 수행 할 수 있습니다.

awk 일 수도 있지만 스니퍼의 결과를 읽는 기술은 무엇인지 모르겠습니다.

고맙습니다.

답변

2

웹 서버의 로그 파일을 grep 할 수 없습니까? 어쨌든

, 내가 로그를 구문 분석 할 수 있습니다, 단지

./tshark 'tcp port 80 and \ 
      (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' \ 
      -R'http.request.method == "GET"' | \ 
    egrep "HTTP GET /pids/.*.bin" 
+0

확인과 시도, 서버 파일을 캡처 한 HTTP 트래픽 상대의 라인을 추출하는, 그러나 때때로 나는 10-20G 파일 크기를 얻을 수 있으며 높은 원인 CPU. 그래서 그것을 스니퍼하려고합니다. –

+0

그냥'tail -f/path/logfile | grep etc' 데이터가 필요하면'지금부터' –

관련 문제