Erlend, look at the body contain which allows you to place command execution in shell (disabled by default).
2011/4/19 Erlend Leganger <erlend.legan...@gmail.com>: > I was trying to maintain /etc/defaultrouter using cfengine communit > v3.1.4. When the file changes, you either have to reboot the server > for it to take effect or use the route command to delete the current > default route and add the new. I tried with the policy below, but get > errors. > > Here is a complete policy that demonstrates the problem. > > root@canal:master$ cat tester-0.cf > #------------------------------------------------------------------------ > body common control{ > bundlesequence=>{"tester"}; > } > > #------------------------------------------------------------------------ > bundle agent tester{ > commands: > any:: > "/usr/bin/echo $(/usr/bin/hostname)"; > } > root@canal:master$ /var/cfengine/bin/cf-agent -f ./tester-0.cf > Q: "...r/bin/echo $(/u": $(/usr/bin/hostname) > I: Last 1 quoted lines were generated by promiser "/usr/bin/echo > $(/usr/bin/hostname)" > root@canal:master$ > > Using "echo $(hostname)" works fine on the command line, but not in > cfengine; the subshell is ignored (I do know about env variable > $HOSTNAME, this just demonstrates the problem). Replacing the bash > $(..) construct with backtics gives the same result. Any tips? > > - Erlend > > > > > #------------------------------------------------------------------------ > bundle agent xyz_defaultrouter{ > files: > phyxx:: > "/etc/defaultrouter" > handle => "xyz_defaultrouter", > comment => "Set correct default router", > > copy_from=>xyz_cp_file("$(g.fileserver)","$(g.filedepot)/defaultrouter.std") > , > perms=>xyz_perms("root","sys","644"), > classes => xyz_satisfied("xyz_reset_defaultrouter"); > > commands: > xyz_reset_defaultrouter:: > "/usr/sbin/route delete default $(/usr/bin/netstat > -r|/usr/bin/grep default| > /usr/bin/awk '{print $2}')"; > "/usr/sbin/route add default $(/usr/bin/cat /etc/defaultrouter) 1"; > > reports: > xyz_reset_defaultrouter:: > "xyz_defaultrouter: updated default router"; > } > > > > root@canal:/$ rm /etc/defaultrouter > root@canal:/$ /var/cfengine/bin/cf-agent -KI > -> Copying from 10.0.0.230:/export/cfengine/depot/defaultrouter.std > -> Group of /etc/defaultrouter was 0, setting to 3 > -> Object /etc/defaultrouter had permission 600, changed it to 644 > -> Group of /etc/defaultrouter was 0, setting to 3 > -> Object /etc/defaultrouter had permission 0, changed it to 644 > -> Executing '/usr/sbin/route delete default $(/usr/bin/netstat > -r|/usr/bin/grep default|/usr/bin/awk '{print $2}')' > ...(timeout=-678,owner=-1,group=-1) > !! Finished command related to promiser "/usr/sbin/route delete > default $(/usr/bin/netstat -r|/usr/bin/grep default|/usr/bin/awk > '{print $2}')" -- an error occurred (returned 1) > Q: "...sbin/route dele": route: $(/usr/bin/netstat: unexpected '/' > I: Last 1 quoted lines were generated by promiser "/usr/sbin/route > delete default $(/usr/bin/netstat -r|/usr/bin/grep > default|/usr/bin/awk '{print $2}')" > -> Completed execution of /usr/sbin/route delete default > $(/usr/bin/netstat -r|/usr/bin/grep default|/usr/bin/awk '{print $2}') > -> Executing '/usr/sbin/route add default $(/usr/bin/cat > /etc/defaultrouter) 1' ...(timeout=-678,owner=-1,group=-1) > !! Finished command related to promiser "/usr/sbin/route add default > $(/usr/bin/cat /etc/defaultrouter) 1" -- an error occurred (returned > 1) > Q: "...sbin/route add ": route: $(/usr/bin/cat: unexpected '/' > I: Last 1 quoted lines were generated by promiser "/usr/sbin/route add > default $(/usr/bin/cat /etc/defaultrouter) 1" > -> Completed execution of /usr/sbin/route add default $(/usr/bin/cat > /etc/defaultrouter) 1 > R: xyz_defaultrouter: updated default router > -> Executing '/usr/bin/bash /var/cfengine/local/bin/cfe-pulse.sh' > ...(timeout=-678,owner=-1,group=-1) > -> Completed execution of /usr/bin/bash /var/cfengine/local/bin/cfe-pulse.sh > root@canal:/$ > > > root@canal:/$ rm /etc/defaultrouter > root@canal:/$ /var/cfengine/bin/cf-agent -KI > -> Copying from 10.0.0.230:/export/cfengine/depot/defaultrouter.std > -> Group of /etc/defaultrouter was 0, setting to 3 > -> Object /etc/defaultrouter had permission 600, changed it to 644 > -> Group of /etc/defaultrouter was 0, setting to 3 > -> Object /etc/defaultrouter had permission 0, changed it to 644 > -> Executing '/usr/sbin/route delete default `/usr/bin/netstat > -r|/usr/bin/grep default|/usr/bin/awk '{print $2}'`' > ...(timeout=-678,owner=-1,group=-1) > !! Finished command related to promiser "/usr/sbin/route delete > default `/usr/bin/netstat -r|/usr/bin/grep default|/usr/bin/awk > '{print $2}'`" -- an error occurred (returned 1) > Q: "...sbin/route dele": route: /usr/bin/netstat -r|/usr/bin/grep > default|/usr/bin/awk '{print $2}': unexpected '/' > I: Last 1 quoted lines were generated by promiser "/usr/sbin/route > delete default `/usr/bin/netstat -r|/usr/bin/grep default|/usr/bin/awk > '{print $2}'`" > -> Completed execution of /usr/sbin/route delete default > `/usr/bin/netstat -r|/usr/bin/grep default|/usr/bin/awk '{print $2}'` > -> Executing '/usr/sbin/route add default `/usr/bin/cat > /etc/defaultrouter` 1' ...(timeout=-678,owner=-1,group=-1) > !! Finished command related to promiser "/usr/sbin/route add default > `/usr/bin/cat /etc/defaultrouter` 1" -- an error occurred (returned 1) > Q: "...sbin/route add ": route: /usr/bin/cat /etc/defaultrouter: unexpected > '/' > I: Last 1 quoted lines were generated by promiser "/usr/sbin/route add > default `/usr/bin/cat /etc/defaultrouter` 1" > -> Completed execution of /usr/sbin/route add default `/usr/bin/cat > /etc/defaultrouter` 1 > R: xyz_defaultrouter: updated default router > z > _______________________________________________ > Help-cfengine mailing list > Help-cfengine@cfengine.org > https://cfengine.org/mailman/listinfo/help-cfengine > -- SY, Seva Gluschenko. _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine