Make stand-alone Policy environment
[integration/csit.git] / scripts / policy / wait_for_port.sh
index 58bf25d..c50cd97 100755 (executable)
@@ -1,21 +1,40 @@
 #!/bin/bash
 
-if [[ $# -ne 2 ]]; then
-       echo "Usage: wait-for-port hostname port" >&2
+tmout=120
+cmd=
+
+while getopts c:t: opt; do
+    case "$opt" in
+    c) cmd="$OPTARG" ;;
+    t) tmout="$OPTARG" ;;
+    esac
+done
+let nargs=$OPTIND-1
+shift $nargs
+
+let even_args=$#%2
+if [[ $# -lt 2 || $even_args -ne 0 ]]; then
+       echo "args: [-t timeout] [-c command] hostname1 port1 hostname2 port2 ..." >&2
        exit 1
 fi
 
-export host=$1
-export port=$2
+while [[ $# -ge 2 ]]; do
+    export host=$1
+    export port=$2
+    shift
+    shift
 
-echo "Waiting for $host port $port open"
-timeout 120 bash -c 'until nc -vz "$host" "$port"; do echo -n "."; sleep 1; done'
-rc=$?
+    echo "Waiting for $host port $port..."
+    timeout $tmout bash -c 'until nc -vz "$host" "$port"; do echo -n ".";
+        sleep 1; done'
+    rc=$?
 
-if [[ $rc != 0 ]]; then
+    if [[ $rc != 0 ]]; then
         echo "$host port $port cannot be reached"
         exit $rc
-fi
+    fi
+done
+
+$cmd
 
-echo "$host port $port is open"
 exit 0