jbo83
06-03-2007, 12:51
Hallo Zusammen,
habe mittels Ksh und expect ein SKript geschrieben, welches remote Aktionen ausführt.
Nun wollte ich Zielhost und Befehl als Parameter -c und -h übergeben.
function usage {
USAGE=$"
[+NAME?${SCRIPT_NAME} - starts Action on Remote Server]
[+DESCRIPTION?Starts Action on Remote Server as root User]
[h:host?target hostname.]:[targethostname]
[c:cmd?Command.]:[targetcmd]
"
while getopts "${USAGE}" OPT
do
case ${OPT} in
h) rhost="${OPTARG}" ;;
c) CMD="$OPTARG" ;;
*) usage ;;
esac
done
shift $(($OPTIND - 1))
if [ -z "$rhost" ] -o [ -z "$CMD" ]; then
echo "Missing Options"
exit 1
fi
echo "$CMD"
echo $rhost
}
Das Funktioniert auch, solange kein - im Argument ist.
z.B. Skript -h loclahost -c date <- ist ok...
aber ein Skript -h localhost -c "ls -l" scheitert an getopts....
Hat einer eine Idee wie man das umgehen kann?
Vorteil an getopts ist die --man Funktion
habe mittels Ksh und expect ein SKript geschrieben, welches remote Aktionen ausführt.
Nun wollte ich Zielhost und Befehl als Parameter -c und -h übergeben.
function usage {
USAGE=$"
[+NAME?${SCRIPT_NAME} - starts Action on Remote Server]
[+DESCRIPTION?Starts Action on Remote Server as root User]
[h:host?target hostname.]:[targethostname]
[c:cmd?Command.]:[targetcmd]
"
while getopts "${USAGE}" OPT
do
case ${OPT} in
h) rhost="${OPTARG}" ;;
c) CMD="$OPTARG" ;;
*) usage ;;
esac
done
shift $(($OPTIND - 1))
if [ -z "$rhost" ] -o [ -z "$CMD" ]; then
echo "Missing Options"
exit 1
fi
echo "$CMD"
echo $rhost
}
Das Funktioniert auch, solange kein - im Argument ist.
z.B. Skript -h loclahost -c date <- ist ok...
aber ein Skript -h localhost -c "ls -l" scheitert an getopts....
Hat einer eine Idee wie man das umgehen kann?
Vorteil an getopts ist die --man Funktion