netcat은 stderr를 stdout으로 리디렉션한 후 변수가 개행 문자를 잃습니다.

netcat은 stderr를 stdout으로 리디렉션한 후 변수가 개행 문자를 잃습니다.

저는 IP 주소와 포트 목록이 포함된 파일을 구문 분석한 다음 netcat을 사용하여 포트에 대해 일련의 테스트를 실행하는 스크립트를 작성하고 있습니다. port 매개변수는 단일 포트, 포트 목록 또는 포트 범위(netcat 기능별)일 수 있습니다.

netcat에 대한 인수가 목록 또는 포트 범위인 경우 stderr에서 포트당 한 줄을 얻습니다(netcat은 모든 것을 stderr로 보냅니다). 그래서 내 생각은 결과를 변수에 저장하고 루프(라인당)로 구문 분석하여 각 포트의 테스트 상태(성공, 거부, 시간 초과)를 가져오는 것입니다.

결과를 저장하기 위해 stderr를 stdout으로 리디렉션하고 변수에 저장합니다.

test=$(netcat -w 1 -zv 10.141.32.117 443-445 2>&1)

그러나 이것은 개행 문자를 제거합니다.

echo $test
netcat: connect to 10.141.32.117 port 443 (tcp) failed: Connection timed out netcat: connect to 10.141.32.117 port 444 (tcp) failed: Connection timed out netcat: connect to 10.141.32.117 port 445 (tcp) failed: Connection timed out

stderr를 파일로 리디렉션하면 결과에 다음 줄이 포함됩니다. stderr를 stdout으로 리디렉션하면 줄 끝이 제거됩니까?

현재 파일로 리디렉션 중입니다.

설명해 주셔서 감사합니다.

관련 정보