iAdd -p flag for persistent connections through the script - drist - a remote deployment tool Err bitreich.org 70 hgit clone git://bitreich.org/drist/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/drist/ URL:git://bitreich.org/drist/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/drist/ bitreich.org 70 1Log /scm/drist/log.gph bitreich.org 70 1Files /scm/drist/files.gph bitreich.org 70 1Refs /scm/drist/refs.gph bitreich.org 70 1Tags /scm/drist/tag bitreich.org 70 1README /scm/drist/file/README.gph bitreich.org 70 1LICENSE /scm/drist/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 1937be9bc7349fcd17b34d24cb3738fbba966d62 /scm/drist/commit/1937be9bc7349fcd17b34d24cb3738fbba966d62.gph bitreich.org 70 1parent 9131a56282d056474e4d59233dcf3ad2ec9b24cc /scm/drist/commit/9131a56282d056474e4d59233dcf3ad2ec9b24cc.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Fri, 15 Feb 2019 15:48:59 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdd -p flag for persistent connections through the script Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M drist | 24 +++++++++++++++++++----- Err bitreich.org 70 i M drist.1 | 9 +++++++++ Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 28 insertions(+), 5 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/drist b/drist /scm/drist/file/drist.gph bitreich.org 70 i@@ -4,17 +4,19 @@ SIMULATE=0 Err bitreich.org 70 i SUDO=0 Err bitreich.org 70 i SUDO_BIN=sudo Err bitreich.org 70 i EXEC="" Err bitreich.org 70 i+SSHONCE=0 Err bitreich.org 70 i Err bitreich.org 70 i usage() { Err bitreich.org 70 i echo "$0 [-n] [-s [-e sudo|doas]] server" Err bitreich.org 70 i exit 0 Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-while getopts nse: arg; do Err bitreich.org 70 i+while getopts pnse: arg; do Err bitreich.org 70 i case ${arg} in Err bitreich.org 70 i n) SIMULATE=1 ;; Err bitreich.org 70 i s) SUDO=1 ;; Err bitreich.org 70 i e) SUDO_BIN="${OPTARG}" ;; Err bitreich.org 70 i+ p) SSHONCE=1 ;; Err bitreich.org 70 i *) usage ;; Err bitreich.org 70 i esac Err bitreich.org 70 i done Err bitreich.org 70 i@@ -26,11 +28,17 @@ then Err bitreich.org 70 i EXEC="$SUDO_BIN" Err bitreich.org 70 i fi Err bitreich.org 70 i Err bitreich.org 70 i+# use ControlMaster to make connections persistent Err bitreich.org 70 i+if [ "$SSHONCE" -eq 1 ] Err bitreich.org 70 i+then Err bitreich.org 70 i+ SSH_PARAMS=-o"ControlMaster=auto"" "-o"ControlPath=/tmp/drist_ssh_%h_%p_%r.sock"" "-o"ControlPersist=1m" Err bitreich.org 70 i+fi Err bitreich.org 70 i+ Err bitreich.org 70 i # check if host exists Err bitreich.org 70 i if [ "$#" -ne 1 ]; then Err bitreich.org 70 i usage Err bitreich.org 70 i else Err bitreich.org 70 i- HOSTNAME=$(ssh "$1" "${EXEC} uname -n") Err bitreich.org 70 i+ HOSTNAME=$(ssh $SSH_PARAMS "$1" "${EXEC} uname -n") Err bitreich.org 70 i if [ "$?" -ne 0 ]; then Err bitreich.org 70 i echo "Error while ssh ${1}" Err bitreich.org 70 i exit 2 Err bitreich.org 70 i@@ -50,7 +58,7 @@ copy_files() { Err bitreich.org 70 i find "${1}"/ -type f | cut -d '/' -f 2- | tee "${LIST}" | sed 's/^/ \//' Err bitreich.org 70 i if [ "$SIMULATE" -ne 1 ] Err bitreich.org 70 i then Err bitreich.org 70 i- rsync --rsync-path="${EXEC} rsync" -lD --files-from="${LIST}" "${1}/" "${2}":/ Err bitreich.org 70 i+ rsync -e "ssh $SSH_PARAMS" --rsync-path="${EXEC} rsync" -lD --files-from="${LIST}" "${1}/" "${2}":/ Err bitreich.org 70 i fi Err bitreich.org 70 i rm "$LIST" Err bitreich.org 70 i fi Err bitreich.org 70 i@@ -65,7 +73,7 @@ remote_script() { Err bitreich.org 70 i printf 'Executing file "%s":\n' "$1" Err bitreich.org 70 i if [ "$SIMULATE" -ne 1 ] Err bitreich.org 70 i then Err bitreich.org 70 i- ssh "${2}" "DRIST=$(mktemp /tmp/drist.XXXXXXXXXXXX) && Err bitreich.org 70 i+ ssh $SSH_PARAMS "${2}" "DRIST=$(mktemp /tmp/drist.XXXXXXXXXXXX) && Err bitreich.org 70 i cat - > \$DRIST && Err bitreich.org 70 i chmod u+x \$DRIST && Err bitreich.org 70 i ${EXEC} \$DRIST ; Err bitreich.org 70 i@@ -91,7 +99,7 @@ delete_files() { Err bitreich.org 70 i Err bitreich.org 70 i if [ "$SIMULATE" -ne 1 ] Err bitreich.org 70 i then Err bitreich.org 70 i- test -s "$LIST" && ssh "$2" "${EXEC} rm $(cat $LIST)" Err bitreich.org 70 i+ test -s "$LIST" && ssh $SSH_PARAMS "$2" "${EXEC} rm $(cat $LIST)" Err bitreich.org 70 i fi Err bitreich.org 70 i rm $LIST Err bitreich.org 70 i fi Err bitreich.org 70 i@@ -105,3 +113,9 @@ remote_script "script" "$1" Err bitreich.org 70 i remote_script "script-${HOSTNAME}" "$1" Err bitreich.org 70 i delete_files "absent" "$1" Err bitreich.org 70 i delete_files "absent-${HOSTNAME}" "$1" Err bitreich.org 70 i+ Err bitreich.org 70 i+# close socket if persistance is actived Err bitreich.org 70 i+if [ "$SSHONCE" -eq 1 ] Err bitreich.org 70 i+then Err bitreich.org 70 i+ ssh $SSH_PARAMS -O exit -N "$1" Err bitreich.org 70 i+fi Err bitreich.org 70 1diff --git a/drist.1 b/drist.1 /scm/drist/file/drist.1.gph bitreich.org 70 i@@ -6,10 +6,17 @@ Err bitreich.org 70 i .Nd dumb remote installer shell tool, a remote deployment tool Err bitreich.org 70 i .Sh SYNOPSIS Err bitreich.org 70 i .Nm Err bitreich.org 70 i+.Op Fl p Err bitreich.org 70 i .Op Fl n Err bitreich.org 70 i .Op Fl s Op Fl e Ar sudo|doas Err bitreich.org 70 i .Ar server Err bitreich.org 70 i .Sh OPTIONS Err bitreich.org 70 i+.Op Fl p Err bitreich.org 70 i+to use persistent ssh connection, allowing to ssh only once Err bitreich.org 70 i+for the differents steps. Err bitreich.org 70 i+This uses ControlMaster feature from Err bitreich.org 70 i+.Xr ssh 1 . Err bitreich.org 70 i+ Err bitreich.org 70 i .Op Fl n Err bitreich.org 70 i to simulate. Err bitreich.org 70 i Tells Err bitreich.org 70 i@@ -118,6 +125,8 @@ distribution. Err bitreich.org 70 i .Ex -std drist Err bitreich.org 70 i .Sh SEE ALSO Err bitreich.org 70 i .Xr rsync 1 Err bitreich.org 70 i+.Xr ssh 1 Err bitreich.org 70 i+.Xr ssh_config 5 Err bitreich.org 70 i .Sh Authors Err bitreich.org 70 i .An -nosplit Err bitreich.org 70 i The Err bitreich.org 70 .