#! /bin/sh # usage: services [user@]hostname[:port] # environment: # services_identity_file path to ssh(1) identity_file set -euf user=services hostname=${1-localhost} port=1337 options="${options+$options }-o ControlMaster=no" if test -n "${services_identity_file-}"; then options="${options+$options }-i $services_identity_file" fi if echo $hostname | grep -q @; then user=`echo $hostname | cut -d@ -f1` hostname=`echo $hostname | cut -d@ -f2` fi if echo $hostname | grep -q :; then port=`echo $hostname | cut -d: -f2` hostname=`echo $hostname | cut -d: -f1` fi exec 3>&1 { set +e ssh -T $options $user@$hostname -p $port echo "# Exit:$?" >&2 } 2>&1 1>&3 | { err="`cat`" code=`echo "$err" | sed -n 's/^# Exit:\([0-9]\+\)/\1/p'` echo "$err" | sed ' /^Connection to '$hostname' closed/d /^Shared connection to '$hostname' closed/d /^# Exit:/d ' >&2 exit $code }