diff options
Diffstat (limited to 'csit/wait_for_port.sh')
-rwxr-xr-x | csit/wait_for_port.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/csit/wait_for_port.sh b/csit/wait_for_port.sh new file mode 100755 index 00000000..aec5f222 --- /dev/null +++ b/csit/wait_for_port.sh @@ -0,0 +1,56 @@ +#!/bin/sh +# ============LICENSE_START==================================================== +# Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. +# ============================================================================= +# 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====================================================== + +tmout=120 +cmd= +while getopts c:t: opt; do + case "$opt" in + c) cmd="$OPTARG" ;; + t) tmout="$OPTARG" ;; + esac +done +nargs=$(expr $OPTIND - 1) +shift $nargs + +even_args=$(expr $# % 2) +if [ $# -lt 2 -o $even_args -ne 0 ]; then + echo "args: [-t timeout] [-c command] hostname1 port1 hostname2 port2 ..." >&2 + exit 1 +fi + +while [ $# -ge 2 ]; do + export host=$1 + export port=$2 + shift + shift + + echo "Waiting for $host port $port..." + timeout $tmout sh -c 'until nc -vz "$host" "$port"; do echo -n "."; + sleep 1; done' + rc=$? + + if [ $rc != 0 ]; then + echo "$host port $port cannot be reached" + exit $rc + fi +done + +$cmd + +exit 0 |