#!/usr/bin/env bash set -eu script_name=$0 die() { echo >&2 "$@" exit 1 } about() { die "usage: ${script_name} [-q] " } [[ $# -lt 1 ]] && about QUIET= if [[ "$1" == "-q" ]]; then QUIET=quiet shift fi [[ $# -lt 1 ]] && about port_number=$1 # 4 seconds may seem long, but the tests must work on embedded, slow arm boxes too for _ in $(seq 40); do nc -z localhost "${port_number}" >/dev/null 2>&1 && exit 0 sleep .1 done # send to &3 if open if { true >&3; } 2>/dev/null; then [[ -z "${QUIET}" ]] && echo "Can't connect to port ${port_number}" >&3 else [[ -z "${QUIET}" ]] && echo "Can't connect to port ${port_number}" >&2 fi exit 1