#!/bin/sh # ============LICENSE_START==================================================== # Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. # Modifications Copyright (C) 2022-2023 Nordix Foundation. # ============================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END====================================================== usage() { echo args: [-t timeout] [-c command] hostname1 port1 hostname2 port2 ... >&2 exit 1 } tmout=300 cmd= while getopts c:t: opt do case "$opt" in c) cmd="$OPTARG" ;; t) tmout="$OPTARG" ;; *) usage ;; esac done nargs=$((OPTIND-1)) shift "$nargs" even_args=$(($#%2)) if [ $# -lt 2 ] || [ "$even_args" -ne 0 ] then usage fi while [ $# -ge 2 ] do export host="$1" export port="$2" shift shift echo "Waiting for $host port $port..." while [ "$tmout" -gt 0 ] do if command -v docker > /dev/null 2>&1 then docker ps --format "table {{ .Names }}\t{{ .Status }}" fi nc -vz "$host" "$port" rc=$? if [ $rc -eq 0 ] then break else tmout=$((tmout-1)) sleep 1 fi done if [ $rc -ne 0 ] then echo "$host port $port cannot be reached" exit $rc fi done $cmd exit 0