blob: aec5f222e59d6bc1b3f802d505af0adfdea1a432 [file] [log] [blame]
Taka Cho6d188af2021-01-11 16:48:33 -05001#!/bin/sh
2# ============LICENSE_START====================================================
3# Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
4# =============================================================================
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
17# SPDX-License-Identifier: Apache-2.0
18# ============LICENSE_END======================================================
19
20tmout=120
21cmd=
22while getopts c:t: opt; do
23 case "$opt" in
24 c) cmd="$OPTARG" ;;
25 t) tmout="$OPTARG" ;;
26 esac
27done
28nargs=$(expr $OPTIND - 1)
29shift $nargs
30
31even_args=$(expr $# % 2)
32if [ $# -lt 2 -o $even_args -ne 0 ]; then
33 echo "args: [-t timeout] [-c command] hostname1 port1 hostname2 port2 ..." >&2
34 exit 1
35fi
36
37while [ $# -ge 2 ]; do
38 export host=$1
39 export port=$2
40 shift
41 shift
42
43 echo "Waiting for $host port $port..."
44 timeout $tmout sh -c 'until nc -vz "$host" "$port"; do echo -n ".";
45 sleep 1; done'
46 rc=$?
47
48 if [ $rc != 0 ]; then
49 echo "$host port $port cannot be reached"
50 exit $rc
51 fi
52done
53
54$cmd
55
56exit 0