xieme-art/content/articles/2022/bash_les_pieges/files/test_ssh.sh

40 lines
923 B
Bash
Executable file

#!/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