reduce number of ssh-calls on sshs

This commit is contained in:
Jakobus Schürz 2022-05-19 08:48:34 +02:00
parent 0ecb4308b3
commit 0bd8b45e55

View file

@ -432,36 +432,42 @@ EOF
if [ -e "${TMPBASHCONFIG}" ] ; then if [ -e "${TMPBASHCONFIG}" ] ; then
logdebug "create remote bashrc" logdebug "create remote bashrc"
logdebug "SSH_OPTS: $SSH_OPTS" logdebug "SSH_OPTS: $SSH_OPTS"
local REMOTETMPBASHCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR-~} -t bashrc.XXXXXXXX --suffix=.conf" | tr -d '[:space:]' ) local REMOTETMPCONFIGS=($(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR-~} -t bashrc.XXXXXXXX --suffix=.conf" | tr -d '[:space:]' ) $(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR-~} -t vimrc.XXXXXXXX --suffix=.conf" | tr -d '[:space:]' ))
logdebug "REMOTETMPBASHCONFIG: $REMOTETMPBASHCONFIG" echo remote tmp bashrc ${REMOTETMPCONFIGS[0]}
logdebug $(ssh -T ${SSH_OPTS} $@ "stat ${REMOTETMPBASHCONFIG}") echo remote tmp vimrc ${REMOTETMPCONFIGS[1]}
logdebug $(ssh -T ${SSH_OPTS} $@ "hostnamectl") #local REMOTETMPBASHCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR-~} -t bashrc.XXXXXXXX --suffix=.conf" | tr -d '[:space:]' )
logdebug "create remote vimrc" #logdebug "REMOTETMPBASHCONFIG: $REMOTETMPBASHCONFIG"
local REMOTETMPVIMCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR-~} -t vimrc.XXXXXXXX --suffix=.conf" | tr -d '[:space:]' ) # logdebug $(ssh -T ${SSH_OPTS} $@ "stat ${REMOTETMPBASHCONFIG}")
logdebug "REMOTETMPVIMCONFIG: $REMOTETMPVIMCONFIG" # logdebug $(ssh -T ${SSH_OPTS} $@ "hostnamectl")
#logdebug "create remote vimrc"
#local REMOTETMPVIMCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR-~} -t vimrc.XXXXXXXX --suffix=.conf" | tr -d '[:space:]' )
#logdebug "REMOTETMPVIMCONFIG: $REMOTETMPVIMCONFIG"
# Add additional aliases to bashrc for remote-machine # Add additional aliases to bashrc for remote-machine
cat << EOF >> "${TMPBASHCONFIG}" cat << EOF >> "${TMPBASHCONFIG}"
alias vi='vim -u ${REMOTETMPVIMCONFIG}' alias vi='vim -u ${REMOTETMPCONFIGS[1]}'
alias vim='vim -u ${REMOTETMPVIMCONFIG}' alias vim='vim -u ${REMOTETMPCONFIGS[1]}'
alias vimdiff='vimdiff -u ${REMOTETMPVIMCONFIG}' alias vimdiff='vimdiff -u ${REMOTETMPCONFIGS[1]}'
export LS_OPTIONS="${LS_OPTIONS}" export LS_OPTIONS="${LS_OPTIONS}"
export VIMRC="${REMOTETMPVIMCONFIG}" export VIMRC="${REMOTETMPCONFIGS[1]}"
export BASHRC="${REMOTETMPBASHCONFIG}" export BASHRC="${REMOTETMPCONFIGS[0]}"
title "\$USER@\$HOSTNAME: \$PWD" title "\$USER@\$HOSTNAME: \$PWD"
loginfo "This bash runs with temporary config from \$BASHRC" loginfo "This bash runs with temporary config from \$BASHRC"
EOF EOF
logdebug "create fill remote bashrc" logdebug "create fill remote bashrc"
ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPBASHCONFIG}" < "${TMPBASHCONFIG}" #ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPBASHCONFIG}" < "${TMPBASHCONFIG}"
logtrace $(ssh -T ${SSH_OPTS} $@ "stat ${REMOTETMPBASHCONFIG}") ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPCONFIGS[0]}" < "${TMPBASHCONFIG}"
# logtrace $(ssh -T ${SSH_OPTS} $@ "stat ${REMOTETMPBASHCONFIG}")
logdebug "create file remote vimrc" logdebug "create file remote vimrc"
ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPVIMCONFIG}" < "${MSC_BASE}/vimrc" #ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPVIMCONFIG}" < "${MSC_BASE}/vimrc"
ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPCONFIGS[1]}" < "${MSC_BASE}/vimrc"
local RCMD="/bin/bash --noprofile --norc -c " local RCMD="/bin/bash --noprofile --norc -c "
RCMD=" RCMD="
trap \"rm -f ${REMOTETMPBASHCONFIG} ${REMOTETMPVIMCONFIG}\" EXIT " ; trap \"rm -f ${REMOTETMPCONFIGS[0]} ${REMOTETMPCONFIGS[1]}\" EXIT " ;
logdebug "run remote shell with temporary config" logdebug "run remote shell with temporary config"
ssh -t ${SSH_OPTS} $@ "$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}\""
ssh -t ${SSH_OPTS} $@ "$RCMD; SSHS=true bash -c \"function bash () { /bin/bash --rcfile ${REMOTETMPCONFIGS[0]} -i ; } ; export -f bash; exec bash --rcfile ${REMOTETMPCONFIGS[0]}\""
rm "${TMPBASHCONFIG}" rm "${TMPBASHCONFIG}"
else else
logwarn "${TMPBASHCONFIG} does not exist. Using »ssh -t $@«" logwarn "${TMPBASHCONFIG} does not exist. Using »ssh -t $@«"