65 lines
1.3 KiB
Bash
Executable file
65 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
server="192.168.0.254 -i ~/.ssh/rick.epha.se.ed25519"
|
|
user="ephase"
|
|
|
|
# Reutilisons ce que nous avons créé lors du précédent article
|
|
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} || {
|
|
error "Can't connect to $server";
|
|
exit 20;
|
|
}
|
|
}
|
|
|
|
launch_command() {
|
|
if [ -z "$1" ]
|
|
then
|
|
error "Launch command require 1 parameter"
|
|
exit 31
|
|
fi
|
|
local command
|
|
command="$1"
|
|
ssh -q -t -S "$ssh_sock" ${user}@${server} "$command" || {
|
|
error "";
|
|
exit 30;
|
|
}
|
|
}
|
|
|
|
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";
|
|
}
|
|
}
|
|
|
|
process_int() {
|
|
error "Script interrupted by user (SIGINT)"
|
|
exit 255
|
|
}
|
|
|
|
check_conn() {
|
|
msg "Check connection on ${server}"
|
|
ssh -S "$ssh_sock" -O check $server
|
|
sleep 20
|
|
}
|
|
|
|
msg "Current PID: $$"
|
|
connect
|
|
trap cleanup EXIT
|
|
trap process_int INT
|
|
trap check_conn USR1
|
|
|
|
if [ "$1" = "error" ]
|
|
then
|
|
launch_command
|
|
fi
|
|
for (( i=1; i<=20; i++ ))
|
|
do
|
|
launch_command "echo 'Message N°$i from $server'"
|
|
sleep 2
|
|
done
|