netcat을 사용하여 여러 원격 서버의 포트를 확인하는 방법은 무엇입니까?

netcat을 사용하여 여러 원격 서버의 포트를 확인하는 방법은 무엇입니까?

포트 1521이 server1 및 server2에서 열릴 때까지 기다린 다음 start_apps.sh 스크립트를 실행하는 스크립트 파일에 다음 줄이 있습니다.

포트 1521이 서버(server1 또는 server2)에서 열릴 때까지 기다렸다가 start_apps.sh 스크립트를 실행하도록 이 설정을 수정하려면 어떻게 해야 합니까?

until (nc -z  server1 1521); do echo "$(date +'%Y-%m-%d %T') wait for server1";done
until (nc -z server2 1521); do echo "$(date +'%Y-%m-%d %T') wait for server2"; done
start_apps.sh

답변1

비차단 검사를 수행하는 루프를 사용하겠습니다. 그것은 다음과 같습니다:

#!/bin/sh
while [ 1 ]; do
    if [ $(nc -z server1 1521) ] || [ $(nc -z server2 1521) ]; then
        break
    fi
    sleep 1 # if desired
done
start_apps.sh

두 조건 중 하나가 충족될 때까지 루프가 실행됩니다.

관련 정보