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

Reply via email to