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

Reply via email to