#!/usr/bin/env bash server="192.168.0.254 -i ~/.ssh/rick.epha.se.ed25519" user=ephase source message.sh ssh_sock="/tmp/$(mktemp -u XXXXXXXXXX)" connect() { msg "Create SSH main connection wih socket ${ssh_sock}" ssh -N -o ControlMaster=yes -o ControlPath="$ssh_sock" -f ${user}@${server} || { # reuse error "Can't connect to $server"; exit 210; } } launch_command() { local command command="$1" ssh -q -t -S "$ssh_sock" ${user}@${server} "$command" } cleanup() { # close the master control connexion before msg "Close SSH main connection" ssh -q -o ControlPath="$ssh_sock" -O exit ${server} || { error "Can't close SSH master connection, $ssh_sock remain"; exit 21; } exit } trap "cleanup 255" INT ERR trap "cleanup" EXIT connect for (( i=10; i<=20; i++ )) do launch_command "echo 'Message N°$i from ${server}'" sleep 1 done