포트 범위의 모든 포트가 성공한 경우에만 netcat을 강제로 성공시킬 수 있습니까?

포트 범위의 모든 포트가 성공한 경우에만 netcat을 강제로 성공시킬 수 있습니까?

나는 이것을 검증 스크립트의 일부로 사용하고 nc예상 출력과 비교하여 나열된 각 명령의 출력을 확인합니다.nc

예를 들어,

nc -zvw1 serv1.host.com 443 | gawk '{print $7}' Expected output: succeeded!

내가 직면하고 있는 문제는 포트 범위를 확인하려는 경우 일부 테스트가 실제로 반환될 수 있지만 succeeded!보장할 수 없다는 것입니다.모두포트는 그대로 반환됩니다. 명령과 예상 cmd:output출력을 나열하는 구성 파일과 비교하고 있기 때문에 이것이 문제가 됩니다 1:1.

다음과 같은 것을 나열하는 대신:

nc -zvw1 serv1.host.com 443 | gawk '{print $7}' nc -zvw1 serv1.host.com 444 | gawk '{print $7}' nc -zvw1 serv1.host.com 445 | gawk '{print $7}'

Expected result: succeeded! Expected result: succeeded! Expected result: succeeded!

nc나는 실패를 강제할 수 있기를 원한다 .어느범위 내의 포트에 오류가 발생하므로 이 경우 구성을 다음과 같이 단순화할 수 있습니다.

nc -zvw1 serv1.host.com 443-445 | gawk '{print $7}' Expected result: succeeded!

불행하게도 이것은 간단한 문제에 대한 긴 설명입니다. 사과하다.

답변1

이것은 효과가 있을 수 있습니다:

seq 443 445 \
| xargs -n1 sh -c 'nc -zvw1 serv1.host.com $0 >/dev/null 2>&1 || (echo error! && exit 255)' 2>/dev/null \
&& echo succeeded!

기본적으로 포트 범위를 사용 및 시뮬레이션 seq하고 반환 값을 xargs활용하여 주어진 각 포트 번호에 대한 연결이 중단되거나 성공할 때 설정합니다 .ncecho error!exit 255xargsecho succeeded!

관련 정보