Undefined custom macros remain unparsed
Andreas Ericsson
ae at op5.se
Thu Apr 9 00:04:35 CEST 2009
matthias eble wrote:
> Hi List,
>
> currently Nagios doesn't touch macro strings ($...$) if they are
> undefined. Neither custom nor for default macros get interpreted so that
> the original $...$ string remains the same.
>
> To me $_HOSTUNDEFINEDMACRO$ should evaluate to an empty string rather
> than being left untouched. Especially when used in commands, the
> $_HOSTUNDEFINEDMACRO part gets interpreted by the shell (usually empty)
> and the trailing $ is displayed plainly.
>
> Following patch is made against 3.0.5 but applies cleanly to latest git
> snapshot from git.nagiosprojects.org. It changes the behavior for custom
> macros.
>
> Does anyone see any reasons why this should not be changed?
>
It makes it impossible to use shell variables in commands.
Imagine something like this:
echo "hoopla" > $HOME/$HOSTADDRESS$
as a really, really stupid notification script (or whatever).
Will "$HOME/$" get removed, leaving "HOSTADDRESS$" just because
it's not a valid macro?
If you parse all valid macros first and then remove the remaining
ones, how would you handle
echo "hoopla" > $TMPROOT/.private/$USER/$HOSTADDRESS$
(which is a rather common layout to create user-private temporary
directories on security anal systems). After $HOSTADDRESS$ is
removed, would you then strip "$TMPROOT/.private/$" from the
command?
You could ofcourse getenv() the string after the dollar sign, but
then you'll (someday) run headlong into this:
echo "hoopla" > $TMPROOT/.private/${HOME##*/}/$HOSTADDRESS$
and then you'll spend the rest of your life extending Nagios'
shell-variable quoting code to match that of whatever shell you
happen to be using (not really, but you get the idea I'm sure).
A better way of achieving what you want is to extend the macro
syntax so that
$?_RANDOMCUSTOMVARIABLE$
expands to nothing if _RANDOMCUSTOMVARIABLE can't be located.
--
Andreas Ericsson andreas.ericsson at op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
More information about the Developers
mailing list