#!/bin/sh 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