In my current job I have to connect to various windows boxes with rdesktop. It is really annoying to pass all options and parameters on command line. I would prefer some kind of configuration for storing connection information for servers. Something like ~/.rdesktoprc. Poor man's implementation of resktop config will be discussed in this post.
Unfortunatelly no such thing like configuration exists
although this feature is requested on the official site. I won't wait for this feature to be developed.
Therefore I've written a small script to provide this functionality. It's named rdesktop.sh:
#!/bin/bash
config=${HOME}/.rdesktoprc
function usage()
{
echo "Usage: $(basename ${0}) server"
}
function read_config()
{
local found=false
local comment_regexp="^\s*\#$"
while read line
do
# Ignore empty lines and lines with comments
[[ ${line} =~ ^\s*$ ]] && continue
[[ ${line} =~ ${comment_regexp} ]] && continue
# Line with [server] string
if [[ ${line} =~ ^\s*\[${server}\]\s*$ ]]
then
found=true
continue
fi
if ${found}
then
# Line with [] string - required server section ends
[[ ${line} =~ ^\s*\[.*\]\s*$ ]] && break
options+="${line} "
fi
done < ${config}
}
if [ $# != 1 ]
then
usage
exit 0
fi
server=${1}
options=""
if [ ! -f "${config}" ]
then
echo "Config file ${config} does not exists!"
exit 1
fi
if ! grep "\[${server}\]" ${config} >/dev/null 2>&1
then
echo "Server ${server} not found in config file!"
exit 2
fi
read_config
rdesktop ${options}
Script expects configuration file in $HOME/.rdesktoprc. Config file is divided
to sections. Section begins with [server_name], where server_name
is only descriptive name. Each section can contain rdesktop options and
corresponding parameters. Following configuration file contains two sections -
win-7 and kra:
[vajko@kra ~]$ cat ~/.rdesktoprc # Commented out lines as well as empty lines (like next one) are ignored [win-7] -u vajko -d win_domain -r sound:local -p superServerPassword! -g 90% 192.168.122.81 [win-8] -u vajko -p anotherSuperSecretPassw0rd 192.168.45.39
To connect to chosen server just run script above with single parameter which is name of corresponding section:
[vajko@kra ~]$ rdesktop.sh win-7
Behind the scene script will find corresponding section in config file, contatenate all lines in the section and finally call rdesktop binary with collected options and parameters.
No comments:
Post a Comment