Merge "Fix CSIT for PMSH"
[integration/csit.git] / scripts / policy / wait_for_port.sh
index 10f08de..1d2f515 100755 (executable)
@@ -1,18 +1,39 @@
-#!/bin/bash
+#!/bin/sh
 
-if [[ $# -ne 2 ]]; then
-       echo "Usage: wait-for-port hostname port" >&2
-       exit 1
+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
 
-host=$1
-port=$2
+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=$?
 
-echo "Waiting for $host port $port open"
-until telnet $host $port </dev/null 2>/dev/null | grep -q '^Connected'; do
-       sleep 1
+    if [ $rc != 0 ]; then
+        echo "$host port $port cannot be reached"
+        exit $rc
+    fi
 done
 
-echo "$host port $port is open"
+$cmd
 
 exit 0