나는 이것을 검증 스크립트의 일부로 사용하고 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
활용하여 주어진 각 포트 번호에 대한 연결이 중단되거나 성공할 때 설정합니다 .nc
echo error!
exit 255
xargs
echo succeeded!