add remote connection script

This commit is contained in:
primardj 2024-03-07 19:57:47 +00:00
parent a78cf6ee7d
commit 18b5a7ab9d

144
remote_connection.sh Executable file
View file

@ -0,0 +1,144 @@
#/bin/bash
#
# little class about bash extension parametters.
#
# ${myvar#pattern} delete shortest occurence from the begining
# ${myvar##pattern} delete longuest occurence from begining
# ${myvar%pattern} delete shortest occurence from the end
# ${myvar%%pattern} delete longuest occurence from the end
#
# conclusion, use of # will delete the pattern at begining
# and % will delete the parameter at the end.
default_user="root"
default_hostname="localhost"
default_ssh_port="22"
default_rsp_port="3389"
default_vnc_port="5900"
Version="2.0.1"
Usage="
$(basename $0) [OPTION] [OPTION=VALUE] PROTOCOL
script which permit to launch a remote connection protocol.
PROTOCOL available
ssh A command line protocol which can be used to connect with tcp
rsp The windows remote server protocol
PROTOCOL #TODO
vnc Virtual Networking Computing, permit to have access to a graphical user interface.
OPTION available
-v, --version print the version and exit
-h, --help print this help and exit
-u <user>,--user=<user> Select the user, by default root
-p <port>,--port=<port> Select the port, by default 10022
-H <hostname>, --hostname=<hostname> Select the hostname to connect
"
start_ssh() {
if [ "${port}" == "" ]
then
port="${default_ssh_port}"
fi
echo "start ssh with user=${user} port=${port} hostname=${hostname}"
ssh -o "StrictHostKeyChecking no" -o "UserKnownHostsFile=/dev/null" -p "${port}" "${user}@${hostname}"
}
start_rsp() {
if [ "${port}" == "" ]
then
port="${default_rsp_port}"
fi
hostname="${hostname}:${port}"
echo "start rsp with user=${user} port=${port} hostname=${hostname}"
xfreerdp /v:"${hostname}" /u:"${user}" /dynamic-resolution
}
# Parser
# looking for double parametters.
for (( arg=1; arg<$#; arg++)); do
value="$((arg+1))"
if [ "${!arg}" == "-u" ]
then
user="${!value}"
elif [ "${!arg}" == "-p" ]
then
port="${!value}"
elif [ "${!arg}" == "-H" ]
then
hostname="${!value}"
fi
done
# looking for all parametter alone
for i in "$@"; do
case "$i" in
"ssh")
protocol="ssh"
;;
"rsp")
protocol="rsp"
;;
"--version" | "-v")
echo "$(basename $0) v.${Version}"
exit 0
;;
"--help" | "-h")
echo "${Usage}"
exit 0
;;
esac
done
for i in "$@"; do
case "${i%=*}" in
"--user")
user="${i#*=}"
;;
"--port")
port="${i#*=}"
;;
"--hostname")
hostname="${i#*=}"
;;
esac
done
if [ "${user}" == "" ]
then
user="${default_user}"
fi
if [ "${hostname}" == "" ]
then
hostname="${default_hostname}"
fi
# Last check, if protocol define, launch it, else, exit 0
case "${protocol}" in
"ssh")
start_ssh
;;
"rsp")
start_rsp
;;
*)
echo "protocol ${protocol} uknown" >&2
echo "${Usage}"
exit
;;
esac