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