ssh-fwd : remaniement du système d'analyse des arguments

This commit is contained in:
Hippolyte Chauvin 2023-11-11 17:32:08 +01:00
parent 7297666d6c
commit 1f68407d9b

View file

@ -7,20 +7,10 @@ error() {
error_null_arg() { error_null_arg() {
local error local error
error="Variable \"${1}\" can't be null" error="Argument \"${arg_name}\" can't be null"
error 1 error 1
} }
# Parser les variables
trap error_null_arg EXIT
set -e
ssh_host="$1"
shift
trap - EXIT
set +e
# Lancer la redirection SSH # Lancer la redirection SSH
start_forwarding() { start_forwarding() {
ssh \ ssh \
@ -28,7 +18,7 @@ start_forwarding() {
-L "${local_port}:${target}:${distant_port}" \ -L "${local_port}:${target}:${distant_port}" \
"$@" \ "$@" \
"$ssh_host" "$ssh_host"
} }
# Supprimer la redirection SSH # Supprimer la redirection SSH
stop_forwarding() { stop_forwarding() {
@ -42,9 +32,32 @@ is_forwarding_active() {
| sed 's/.*://' | sort | uniq | grep -q "$local_port" | sed 's/.*://' | sort | uniq | grep -q "$local_port"
} }
step() {
printf '\033[1;32m*\033[0m \033[1m%s...\033[0m\n' "$*"
}
# Parser les variables
trap error_null_arg EXIT
set -e
arg_name='SSH host' ; ssh_host="$1" ; shift
arg_name='local port' ; local_port="$1" ; shift
arg_name='distant port'; distant_port="$1"; shift
trap - EXIT
unset arg_name
if [ -n "$1" ]
then target="$1"
else target=localhost
fi
set +e
# Branchement principal # Branchement principal
if ! is_forwarding_active; then if ! is_forwarding_active; then
step "Starting the redirection"
start_forwarding start_forwarding
else else
step "Stopping the redirection"
stop_forwarding stop_forwarding
fi fi