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 <solene@perso.pw> 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
.
Response:
text/plain