diff --git a/functions.sh b/functions.sh index 0c22d75..0fc7d50 100644 --- a/functions.sh +++ b/functions.sh @@ -265,6 +265,7 @@ sshs() { local TMPBASHCONFIG=$(mktemp -p ${XDG_RUNTIME_DIR} -t bashrc.XXXXXXXX --suffix=.conf) local FILELIST=( ~/.aliases "${MYSHELLCONFIG_BASE}/functions.sh" "${MYSHELLCONFIG_BASE}/aliases" "${MYSHELLCONFIG_BASE}/PS1" "${MYSHELLCONFIG_BASE}/bash_completion.d/*" "${MYSHELLCONFIG_BASE}/myshell_load_fortmpconfig" ) + local SSH_OPTS="-o VisualHostKey=no -o ControlMaster=auto -o ControlPersist=15s -o ControlPath=~/.ssh/ssh-%r@%h:%p" # Read /etc/bashrc or /etc/bash.bashrc (depending on distribution) and /etc/profile.d/*.sh first cat << EOF >> "${TMPBASHCONFIG}" [ -e /etc/bashrc ] && BASHRC=/etc/bashrc @@ -293,8 +294,8 @@ EOF if [ $# -ge 1 ]; then if [ -e "${TMPBASHCONFIG}" ] ; then local RCMD="/bin/bash --noprofile --norc -c " - local REMOTETMPBASHCONFIG=$(ssh -T -o VisualHostKey=no $@ "mktemp -p \${XDG_RUNTIME_DIR} -t bashrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]' ) - local REMOTETMPVIMCONFIG=$(ssh -T -o VisualHostKey=no $@ "mktemp -p \${XDG_RUNTIME_DIR} -t vimrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]') + local REMOTETMPBASHCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR} -t bashrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]' ) + local REMOTETMPVIMCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR} -t vimrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]') # Add additional aliases to bashrc for remote-machine cat << EOF >> "${TMPBASHCONFIG}" @@ -308,11 +309,11 @@ title "\$USER@\$HOSTNAME: \$PWD" echo "This bash runs with temporary config from \$BASHRC" EOF - ssh -T -o VisualHostKey=no $@ "cat > ${REMOTETMPBASHCONFIG}" < "${TMPBASHCONFIG}" - ssh -T -o VisualHostKey=no $@ "cat > ${REMOTETMPVIMCONFIG}" < "${MYSHELLCONFIG_BASE}/vimrc" + ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPBASHCONFIG}" < "${TMPBASHCONFIG}" + ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPVIMCONFIG}" < "${MYSHELLCONFIG_BASE}/vimrc" RCMD=" trap \"rm -f ${REMOTETMPBASHCONFIG} ${REMOTETMPVIMCONFIG}\" EXIT " ; - ssh -t $@ "$RCMD; SSHS=true bash -c \"function bash () { /bin/bash --rcfile ${REMOTETMPBASHCONFIG} -i ; } ; export -f bash; exec bash --rcfile ${REMOTETMPBASHCONFIG}\"" + ssh -t ${SSH_OPTS} $@ "$RCMD; SSHS=true bash -c \"function bash () { /bin/bash --rcfile ${REMOTETMPBASHCONFIG} -i ; } ; export -f bash; exec bash --rcfile ${REMOTETMPBASHCONFIG}\"" rm "${TMPBASHCONFIG}" else echo "${TMPBASHCONFIG} does not exist. Use »ssh $@«" >&2 @@ -574,4 +575,14 @@ gnome-shell-extensions-make-actual-permanent-systemwide() { sudo sed -i "/\[org\/gnome\/shell\]/a${line}${EXTENSIONS}" "${file}" sudo dconf update } + +reachable () { + local SERVER=$1 + local PORT=${2:-22} + if nc -z $SERVER $PORT 2>/dev/null; then + echo "${SERVER}:${PORT} is reachable" + else + echo "${SERVER}:${PORT} is not reachable" + fi +} #EOF