bash
스크립트 에서는 conntrack
및 같은 도구를 사용하여 tcpdump
결과를 파일로 출력하지만 명령/스크립트를 실행한 후 명령줄의 첫 번째 출력 줄에 나타나는 표준 메시지를 숨기고 싶습니다.
정보:
conntrack v1.0.0 (conntrack-tools): 6 flow entries have been shown.
매뉴얼 페이지를 읽은 후 bash
다음을 시도했습니다.
conntrack -L|grep "dport=6439" &> /tmp/file
어떤 리디렉션 옵션을 시도하더라도 conntrack
스크립트를 실행하는 셸에는 흐름 항목 수를 나타내는 메시지가 항상 나타납니다. tcpdump
캡처 장치와 캡처된 패킷 수 등이 나열되는 위치도 마찬가지입니다 .
물론 clear
출력을 빠르게 숨기기 위해 or 명령 뒤에 추가할 수도 있지만 그 솔루션은 보기 흉합니다.conntrack
tcpdump
그러한 메시지를 숨기는 방법은 무엇입니까?
답변1
이러한 메시지는 일반 출력(stdout) 대신 오류(stderr)로 인쇄됩니다.
stderr은 전송되지 않고 stdout만 전송됩니다. 따라서 &> /tmp/file
grep을 따르면 자체 stdout 및 stderr 출력만 병합하고 grep
stderr은 병합하지 않습니다.conntrack
예를 들어 다음과 같은 것을 원할 수 있습니다.
conntrack -L 2>&1 | grep "dport=6439" > /tmp/file
stderr은 파일 설명자 2이고 stdout은 파일 설명자 1입니다. 2>&1
stderr를 stdout에 병합합니다.
지속하면 출력이 로 파이프되기 전에 병합 2>&1
됩니다 . 다시 병합할 필요가 없습니다 .conntrack
grep
grep