help-cfengine
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Pipes & ExecResult/ReturnsZero


From: Martin, Jason H
Subject: RE: Pipes & ExecResult/ReturnsZero
Date: Wed, 30 Nov 2005 08:11:02 -0800

Should that quoting style work with older releases? When I use that in a
2.1.14/Solaris config, it blows up:

root_homedir = ( ExecResult("/bin/sh -c \"/usr/bin/grep root:
/etc/passwd | /usr/bin/awk -F: '{print $6}'\"") )
cf:cfengine::/var/cfengine/inputs/cfagent.conf:661: ExecResult(/command)
must specify an absolute path

In any case, I suggest adding an ShellCommandExecResult function as it
would be consistent with the existence of a ShellCommandReturnsZero
functipon.

Thank you,
-Jason Martin

> -----Original Message-----
> From: Mark.Burgess@iu.hio.no [mailto:Mark.Burgess@iu.hio.no] 
> Sent: Tuesday, November 29, 2005 10:54 PM
> To: Martin, Jason H
> Cc: help-cfengine@gnu.org
> Subject: Re: Pipes & ExecResult/ReturnsZero
> 
> 
> > Is it expected that pipe characters will continue to work in 
> > ExecResult even though they no longer work in ReturnsZero? 
> ExecResult 
> > still honors pipe characters inside double-quotes, while 
> ReturnsZero 
> > only honors them inside single quotes.
> >
> > localdate = ( ExecResult(/bin/sh -c "/bin/date | grep 2005") )
> >
> > Whereas ReturnsZero requires opposite quoting to work with pipes
> > properly:
> > ResolvesX = ( ReturnsZero(/bin/sh -c 'nslookup "some.example.com"  
> > 2>&1
> > | grep 169.254.1.1 >/dev/null') )
> >
> > It seems inconsistent to make these two functions require opposite 
> > quoting. Was this intended, or will there be a 
> ShellCommandExecResult 
> > in the future?
> >
> > Thank you,
> > -Jason Martin
> >
> >
> 
> The quopting is the same, but neither of the fnuctions uses a 
> shell. I made an ExecShellResult function for convenience. We 
> could do the same for RetrunsZero is necessary. The quoting I 
> recommend however (latest patchr
> eleases) is to always have quotes around the shell string and 
> to backslash quptes inside them
> 
> Func("/bin/sh -c \"my string\"")
> 
> M
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]