Felix,
On Dec 13, 2010, at 5:52 PM, Felix Frank wrote:
>
> Am I right to assume that
> test -f /does_not_exist *always* returns 1 and
> test -d / *always* returns 0?
Yes.
I should be more clear, because I need an \not\exists operator.
If one or more conditions fail I want to run the command.
Below I have a written a solution using "unless" with
"&&".
> If so, I don''t see the problem ;/
> Either both pass (onlyif) or both fail (unless).
> Use "test -f /does_not_exist || test -d /" to accept either one
passing.
That works, but it is not what I am searching for.
Have a look here:
# does not run if both conditions fail
$ puppet -e '' Exec { path =>
"/usr/bin:/bin:/usr/sbin:/sbin" }
exec { "run_rsn":
command => "touch /bar",
onlyif => [ "test -f /does_not_exist || test -d
/no"]}''
# does run if one condition fail
$ puppet -e '' Exec { path =>
"/usr/bin:/bin:/usr/sbin:/sbin" }
exec { "run_rsn":
command => "touch /bar",
onlyif => [ "test -f /does_not_exist || test -d /"]}''
notice: /Stage[main]//Exec[run_rsn]/returns: executed successfully
Otherwise there is unless, but it did not work as I need, too.
# does not run if one condition fail
$ puppet -e '' Exec { path =>
"/usr/bin:/bin:/usr/sbin:/sbin" }
exec { "run_rsn":
command => "touch /bar",
unless => [ "test -f /does_not_exist || test -d /"]}''
# does run if both conditions fail
$ puppet -e '' Exec { path =>
"/usr/bin:/bin:/usr/sbin:/sbin" }
exec { "run_rsn":
command => "touch /bar",
unless => [ "test -f /does_not_exist || test -d
/foo"]}''
notice: /Stage[main]//Exec[run_rsn]/returns: executed successfully
A solution is &&, but I don''t think that it is "nice"
to use if
there are onlyif and unless.
# does run if one condition fail
$ puppet -e '' Exec { path =>
"/usr/bin:/bin:/usr/sbin:/sbin" }
exec { "run_rsn":
command => "touch /bar",
unless => [ "test -f /does_not_exist && test -d
/"]}''
notice: /Stage[main]//Exec[run_rsn]/returns: executed successfully
# does run if both conditions fail
$ puppet -e '' Exec { path =>
"/usr/bin:/bin:/usr/sbin:/sbin" }
exec { "run_rsn":
command => "touch /bar",
unless => [ "test -f /does_not_exist && test -d
/foo"]}''
notice: /Stage[main]//Exec[run_rsn]/returns: executed successfully
Thanks anyway all the best, Sandor Szücs
--
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to
puppet-users+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.