ssh-fwd : remaniement du système d'analyse des arguments
This commit is contained in:
parent
7297666d6c
commit
1f68407d9b
1 changed files with 25 additions and 12 deletions
35
bin/ssh-fwd
35
bin/ssh-fwd
|
@ -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 \
|
||||||
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue