Forum: CFEngine Help
Subject: Re: allclasses facility?
Author: sauer
Link to topic: https://cfengine.com/forum/read.php?3,27436,27524#msg-27524
neilhwatson Wrote:
-------------------------------------------------------
> What other facility is there to get a list of all
> defined classes?
You're probably supposed to parse the allclasses environment variable (which is
mentioned only once in the reference manual, which isn't clearly an environment
variable of CFEngine array, and whose format seems to be undocumented either
way), until that gets inconvenient, at which time I guess you are expected to
redesign things to make that more convenient. :)
These variables end up in a context which has the same name as the module. When
the $(allclasses) variable becomes too large to manipulate conveniently, you
can access the complete list of currently defined classes in the file
/var/cfengine/state/allclasses.
Of course, I don't see that variable in CFEngine or in the environment:
sauer@host
$ cat test.cf
bundle agent a{
commands:
"/usr/bin/pcregrep -oi 'allclass[^[:cntrl:]]+' /proc/self/environ"
module => "true";
reports:
cfengine:: "$(allclasses)";
}
sauer@host
$ cf-agent -f ./test.cf -b a -IK
>> Using command line specified bundlesequence
-> Executing '/usr/bin/pcregrep -oi 'allclass[^[:cntrl:]]+'
/proc/self/environ' ...(timeout=-678,owner=-1,group=-1)
!! Finished command related to promiser "/usr/bin/pcregrep -oi
'allclass[^[:cntrl:]]+' /proc/self/environ" -- an error occurred (returned 1)
-> Completed execution of /usr/bin/pcregrep -oi 'allclass[^[:cntrl:]]+'
/proc/self/environ
R: $(allclasses)
FYI...
On Linux, /proc//environ contains all of 's environment variables, separated by
null characters, /proc/self is "whatever process is accessing it", and
"pcregrep or grep -o" prints only the part of the line that matches. Just in
case that pcregrep command doesn't make any sense (it really does work,
though). ;)
sauer@host
$ /usr/bin/pcregrep -oi 'shell[^[:cntrl:]]+' /proc/self/environ
SHELL=/usr/bin/sh
As an aside, "pcregrep -oi '[[:cntrl:]]?[^[:cntrl:]]*ass[^[:cntrl:]]+'
/proc/*/environ" as root is a fun way to find people who think that they're
being secure / clever by setting $PASSWORD environment variables instead of
passing them on the command line. Yay security!
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine