You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
873 B
Bash

3 years ago
#!/usr/bin/env bash
set -eu
CURDIR=$(dirname $(readlink "$0"))
CONFLOCAL="~/.local/share/jssh"
CONFHOME="$CONFLOCAL/conf.d"
CONFALLBACK="$CURDIR/conf.d"
[[ -d $CONFHOME ]] && CONFDIR=$CONFHOME || CONFDIR=$CONFALLBACK
[[ -r $CONFDIR/bashrc ]] || { echo "Confdir or bashrc missing or lack of permissions!"; exit 1; }
DSTPREFIX=jssh
if [[ -r "$CONFLOCAL/sshrc.conf" ]]; then
source "$CONFLOCAL/sshrc.conf"
elif [[ -r "$CURDIR/sshrc.conf" ]]; then
source "$CURDIR/sshrc.conf"
fi
arc=$(tar czf - -C $CONFDIR $(find $CONFDIR -type f -printf "%f ")| base64 -w0)
[[ $(echo $arc | wc -c) -le 65535 ]] || { echo "Files size too large!"; exit 1; }
3 years ago
COMMANDS="
export JSSHHOME=\$(mktemp -d /tmp/$'"${DSTPREFIX}"'.XXXXXXXXXX);
echo $'"$arc"' | base64 -di | tar -xzf - -C \$JSSHHOME;
trap \"rm -rf \$JSSHHOME; exit\" 0;
bash --rcfile \$JSSHHOME/bashrc -i
"
3 years ago
ssh -t $@ $COMMANDS