returnszero
Prototype: returnszero(command, shell)
Return type: boolean
The return value is cached.
Description: Runs command
and returns whether it has returned with exit
status zero.
This is the complement of execresult()
, but it returns a class result
rather than the output of the command.
Arguments:
command
:string
, in the range:.+
shell
: one ofnoshell
useshell
powershell
Example:
body common control
{
bundlesequence => { "example" };
}
bundle agent example
{
classes:
"my_result" expression => returnszero("/usr/local/bin/mycommand","noshell");
reports:
!my_result::
"Command failed";
}
Output:
2014-02-10T17:43:55-0500 error: /default/example/classes: Proposed executable file '/usr/local/bin/mycommand' doesn't exist
2014-02-10T17:43:55-0500 error: /default/example/classes: returnszero '/usr/local/bin/mycommand' is assumed to be executable but isn't
2014-02-10T17:43:55-0500 error: /default/example/classes: Proposed executable file '/usr/local/bin/mycommand' doesn't exist
2014-02-10T17:43:55-0500 error: /default/example/classes: returnszero '/usr/local/bin/mycommand' is assumed to be executable but isn't
R: Command failed
Notes: you should never use this function to execute commands that
make changes to the system, or perform lengthy computations. Such an
operation is beyond CFEngine's ability to guarantee convergence, and
on multiple passes and during syntax verification these function calls
are executed, resulting in system changes that are covert. Calls
to execresult
should be for discovery and information extraction
only. Effectively calls to this function will be also repeatedly
executed by cf-promises
when it does syntax checking, which is
highly undesirable if the command is expensive. Consider using
commands
promises instead, which have locking and are not evaluated
by cf-promises
.
See also: execresult()
.