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