diff --git a/remote_connection.sh b/remote_connection.sh new file mode 100755 index 0000000..2c2bbe1 --- /dev/null +++ b/remote_connection.sh @@ -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= Select the user, by default root + -p ,--port= Select the port, by default 10022 + -H , --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 + + +