sudo tshark -i ppp0 'tcp port 80 \
and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' \
-R'http.request.method == "GET" && http.request.uri contains "/ABC/XYZ"' \
-T fields -e http.host -e http.request.uri
위의 tshark 라인을 사용하여 /ABC/XYZ를 기반으로 출력을 필터링하고 있습니다. 중복 행 예를 찾은 곳과 같은 동적 무작위 데이터를 출력합니다.
1bcdJOSHhijklmnopqrstuvwxyz
1bcdefghijklmnopqrstuvwxyz
1bcdefghijklmnopqrstuvwxyz
3bcdefghijklmnopqrstuvwxyz
2bcdefghijklmnopqrstuvwxyz
1bcdJOSHhijklmnopqrstuvwxyz
3bcdefghijklmnopqrstuvwxyz
파일을 생성하지 않고 일종의 버퍼나 파이프를 사용하여 중복 항목을 제거할 수 있는 방법이 있습니까?
아니면 tshark 자체가 할 수 있나요?
편집: 이유는 모르겠지만 stdbuf -o L
meuh가 제안한 대로 tshark 접두어를 붙인 후 원하는 것을 얻었습니다.
답변1
tshark에 중지 조건이 있는 경우 간단히 출력을 |sort -u
.
awk '{if(!seen[$0]++)print}'
tshark에게 표준 출력을 버퍼링하지 말라고 지시해야 할 수도 있습니다 stdbuf -o L
. tshark 앞에 .