2013-06-11: Links to documentation updated
An implementation of strftime() has just been merged into the master branch
Full documentation is provided, as well as an example reproduced below:
body common control
{
bundlesequence => { "example" };
}
###########################################################
bundle agent example
{
vars:
"time" int => now();
"now" string => strftime("localtime", "%F %T", now());
"then" string => strftime("localtime", "%F %T", 0);
"gmt_now" string => strftime("gmtime", "%F %T", now());
"gmt_then" string => strftime("gmtime", "%F %T", 0);
reports:
cfengine::
"time $(time); now $(now); then $(then)";
"time $(time); GMT now $(now); GMT then $(then)";
}
Output:
R: time 1365106904; now 2013-04-04 22:21:44; then 1970-01-01 01:00:00
R: time 1365106904; GMT now 2013-04-04 22:21:44; GMT then 1970-01-01 01:00:00
I found this function very handy to replace ugly uses of “date” through execresult(), when a special formatted date is needed and hard date/time classes are not enough, so:
body common control {
bundlesequence => { "foo" };
}
bundle agent foo {
vars:
"year" string => execresult("/bin/date +%Y", "noshell");
"month" string => execresult("/bin/date +%m", "noshell");
"year_month" string => "$(year)-$(month)";
"month_year" string => "$(month)-$(year)";
reports:
cfengine::
"Date as YYYY-MM: $(year_month)";
"Date as MM-YYYY: $(month_year)";
}
Output:
R: Date as YYYY-MM: 2013-04
R: Date as MM-YYYY: 04-2013
May be shortened (with extra portability, flexibility and greater clarity) to:
body common control {
bundlesequence => { "foo" };
}
bundle agent foo {
vars:
"year_month" string => strftime("localtime", "%Y-%m", now());
"month_year" string => strftime("localtime", "%m-%Y", now());
reports:
cfengine::
"Date as YYYY-MM: $(year_month)";
"Date as MM-YYYY: $(month_year)";
}
Output:
R: Date as YYYY-MM: 2013-04
R: Date as MM-YYYY: 04-2013
Availability: master branch, upcoming 3.5