tcpdump의 출력을 grep하고 일부를 잘라내고 싶지만 아래 명령이 작동하지 않습니다.
tcpdump ... | grep -i --line-buffered "..." | cut -d'&' -f1,2
문제가 무엇인지 아시나요? tcpdump가 실시간 데이터를 생성하기 때문인 것 같은데 이 문제를 해결하는 방법을 모르겠습니다.
답변1
tcpdump 와 함께 이 옵션을 사용하세요 -l
.
-l은 표준 출력이 라인 버퍼링되도록 합니다. 이는 캡처된 데이터를 보려는 경우에 유용합니다. 예를 들어
tcpdump -l | tee dat'' or
tcpdump -l > dat & tail -f dat''입니다.
맨 페이지에 명확하게 명시되어 있습니다.
tcpdump -l ... | grep -i "..." | cut -d'&' -f1,2
답변2
백그라운드 프로세스를 통해 출력을 tcpdump
파일로 파이프한 다음 tail -F <file> --pid=$!
이를 사용하여 추적할 수 있습니다.
그처럼
tcpdump ... > tcpdump.log 2>&1 &
tail -F tcpdump.log --pid=$! | grep -i --line-buffered "..." | cut -d '&' -f1,2