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.
27 lines
798 B
Bash
27 lines
798 B
Bash
#!/usr/bin/env bash
|
|
|
|
set -eu
|
|
|
|
CONFHOME="~/.local/share/jssh"
|
|
CONFALLBACK=$(dirname $(readlink -f -- "$0"))
|
|
|
|
[[ -d $CONFHOME ]] && CONFDIR=$CONFHOME || CONFDIR=$CONFALLBACK
|
|
|
|
[[ -r $CONFDIR/bashrc.jssh ]] || { echo "Confdir or bashrc missing or lack of permissions!"; exit 1; }
|
|
|
|
DSTPREFIX=jssh
|
|
|
|
[[ -r "$CONFDIR/sshrc.conf.jssh" ]] && source $CONFDIR/sshrc.conf.jssh
|
|
|
|
arc=$(tar czf - -C $CONFDIR $(find $CONFDIR -name ".*" -prune -o -type f -regex ".*\.jssh" -printf "%f ")| base64 -w0)
|
|
[[ $(echo $arc | wc -c) -le 65535 ]] || { echo "Files size too large!"; exit 1; }
|
|
|
|
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.jssh -i
|
|
"
|
|
|
|
ssh -t $@ $COMMANDS
|