2014-04-05 2 views
1

tcpdump를 사용하여 패킷의 타임 스탬프를 추출하여 파일에 넣으면 첫 번째 줄이 비워 지거나 최신 타임 스탬프로 바뀝니다. 마지막 두 번째 패킷의 타임 스탬프). 파일에는 반드시 1 줄 항목 만 있어야합니다. 최신 패킷의 타임 스탬프.첫 줄만 바꾸는 Bash 스크립트

sudo tcpdump -i eth0 -l | cut -d . -f1 > test.txt 

cat test.txt 
16:08:04 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 

하지만 내가 원하는 것은 최신 소인입니다 :

cat test.txt 
16:08:05 

어떤 아이디어

이것은 내가 무슨 짓을?

답변

2

테스트 한 결과 스크립트가 영원히 돌아가고 다른 프로세스에서 마지막 패킷을 볼 필요가있는 것처럼 보입니다. 그렇지 않습니까? 당신이 최신 패킷 (즉, 마지막 줄)을 원하는 경우, 시도하십시오 나머지와 함께 최신 패킷을보고 싶다면

$ cat test.txt 

16:08:04 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 

,

$ tail -1 test.txt 

16:08:05 

을 시도하십시오

$ tail -1 test.txt > tmp_out; cat test.txt >> tmp_out; cat tmp_out 

16:08:05 
16:08:04 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
16:08:05 
사용
+0

내가 찾고있는 것이 아닙니다. 파일에 tcpdump의 출력을 파이핑하고 있지만, 단지 첫 번째 라인을 최신 타임 스탬프로 바꾸기를 원합니다 (공간 제약이 있기 때문에). – user3465593

+0

첫 번째 라인을 바꿉니다. 질문에 대한 질문이 아닙니다. 게시물을 업데이트하십시오. – suspectus

+0

질문을 수정했습니다. 희망이 충분히 명확. – user3465593

0

는 AWK 당신은 할 수 있습니다 :

sudo tcpdump -i en0 -l -c 5 2>/dev/null | awk -F'\\.' '$1~/^[012][0-9]:/{p=$1} 
    END{print p > "output"}' 

cat output 
08:27:51 

이것은 최대 타임 스탬프를 얻고 output이라는 파일에 저장합니다.

관련 문제