fix ip address handling, fix handling when hostname can't be resolved.

This commit is contained in:
uwerler 2019-05-26 17:50:59 +00:00
parent 7fe18fec4d
commit 592e4426dc

27
ssh.sh
View File

@ -51,25 +51,26 @@ exit 1
_checkname(){ _checkname(){
local _host
# parse the output from ssh -G # parse the output from ssh -G
for _l; do for _l; do
case $_l in hostname) case $_l in hostname)
# make stupid check if hostname is an IP # make stupid check if hostname is an IP
[[ ${SHELL} == /bin/bash ]] && shopt -s extglob [[ ${SHELL} == *bash ]] && shopt -s extglob
_ip=${2##+([0-9]).+([0-9]).+([0-9]).+([0-9])} _ip=${2##+([0-9]).+([0-9]).+([0-9]).+([0-9])}
_ip=${_ip##+([0-9a-f]):+([0-9a-f]):+([0-9a-f]):*([0-9a-f:]):+([0-9a-f])} _ip=${_ip##+([0-9a-f]):+([0-9a-f]):+([0-9a-f]):*([0-9a-f:]):+([0-9a-f])}
if [[ -z ${_ip} ]]; then if [[ -z ${_ip} ]]; then
_isip=1
_host=$(dig +short -x ${2}) _host=$(dig +short -x ${2})
[[ -n "${_host}" ]] && _host=${_host%%.*} || _host=${2}
[[ -n "${_host}" ]] || _host=${2}
else else
_host=${2%%.*} _host=${2}
fi fi
break break
;; ;;
@ -77,7 +78,6 @@ _checkname(){
shift shift
done done
[[ ${SHELL} == /bin/bash ]] && printf ${_host} || print -r -- ${_host}
} }
_runxdotool(){ _runxdotool(){
@ -114,12 +114,14 @@ _setpane(){
local _title=${1} _style local _title=${1} _style
_readstyle
[[ -z ${_isip} ]] && _title=${_title%%.*}
[[ -z ${_title} ]] && _title=$(hostname -s) [[ -z ${_title} ]] && _title=$(hostname -s)
$_tmux select-pane -T "$(printf %-${_tabw}.${_tabw}s ${_title})" $_tmux select-pane -T "$(printf %-${_tabw}.${_tabw}s ${_title})"
_readstyle
if [[ -n ${_oldstyle} ]]; then if [[ -n ${_oldstyle} ]]; then
$_tmux select-pane -P ${_oldstyle} $_tmux select-pane -P ${_oldstyle}
@ -142,7 +144,8 @@ _ssh() {
# let ssh parse the command line so we are sane # let ssh parse the command line so we are sane
# avoid overriding the hostname via main config # avoid overriding the hostname via main config
_host=$(_checkname $(/usr/bin/ssh -F /dev/null -G $@)) #_host=$(_checkname $(/usr/bin/ssh -F /dev/null -G $@))
_checkname $(/usr/bin/ssh -F /dev/null -G $@)
fi fi
[[ $($_tmux list-session -F "#S" 2>/dev/null) == *${_sess}* ]] && _s=${_sess} [[ $($_tmux list-session -F "#S" 2>/dev/null) == *${_sess}* ]] && _s=${_sess}
@ -163,18 +166,18 @@ _ssh() {
[[ -z ${_cmd} ]] && _runxdotool && exit [[ -z ${_cmd} ]] && _runxdotool && exit
$_tmux new-window -P -t ${_sess} ${_cmd} _winid=$($_tmux new-window -P -t ${_sess} -F '#I' ${_cmd} )
_setpane ${_host} [[ ${_winid} == $($_tmux list-panes -t ${_sess} -F '#I') ]] && _setpane ${_host}
_runxdotool _runxdotool
# create new session # create new session
else else
$_tmux -f $_ssh_config new-session -d -s ${_sess} ${_cmd} $_tmux -f $_ssh_config new-session -d -s ${_sess} ${_cmd} || exit
# add some settings into the session environment # add some settings into the session environment
$_tmux set-environment -g -t ${_sess} CMD "/bin/bash $0 -r" $_tmux set-environment -g -t ${_sess} CMD "${SHELL} $0 -r"
$_tmux set-hook -g -t ${_sess} after-new-window "run \$CMD" $_tmux set-hook -g -t ${_sess} after-new-window "run \$CMD"
$_tmux set-hook -g -t ${_sess} after-split-window "run \$CMD" $_tmux set-hook -g -t ${_sess} after-split-window "run \$CMD"
$_tmux bind R source-file $_ssh_config \\\; display-message "source-file done" $_tmux bind R source-file $_ssh_config \\\; display-message "source-file done"