aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/policy/wait_for_port.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/policy/wait_for_port.sh')
-rwxr-xr-xscripts/policy/wait_for_port.sh39
1 files changed, 29 insertions, 10 deletions
diff --git a/scripts/policy/wait_for_port.sh b/scripts/policy/wait_for_port.sh
index 58bf25d0..c50cd970 100755
--- a/scripts/policy/wait_for_port.sh
+++ b/scripts/policy/wait_for_port.sh
@@ -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