# # PRE: update if redundant # update control { Cleartext-Password := 'hello' } update reply { Filter-Id := "filter" } # # Exec with script output to attribute # update request { Tmp-String-0 = `/bin/sh -c "echo 'foo bar baz'"` } if (Tmp-String-0 != "foo bar baz") { update reply { Filter-Id += "fail 1" } } # # Exec with output to list (single attribute) # update { request: = `/bin/sh -c "echo Tmp-String-0 := foo"` } if (Tmp-String-0 != 'foo') { update reply { Filter-Id += "fail 2" } } # # Exec with output to list (multiple attributes) # update { request: = `/bin/sh -c 'echo Tmp-String-0 := foo, Tmp-String-1 := bar'` } if ((Tmp-String-0 != 'foo') || (Tmp-String-1 != 'bar')) { update reply { Filter-Id += "fail 3" } } # # Failed exec (malformed attributes) - check no attributes are added # update request { Tmp-String-0 !* ANY Tmp-String-1 !* ANY } redundant { group { update { request: = `/bin/sh -c 'echo Tmp-String-0 := foo, Tmp-String-1 ?= bar'` } } ok } if (Tmp-String-0 || Tmp-String-1) { update reply { Filter-Id += "fail 4" } } # # Exec with output to list - error code # update request { Tmp-String-0 !* ANY Tmp-String-1 !* ANY } redundant { group { update { request: = `/bin/sh -c 'echo Tmp-String-0 := foo; exit 64'` } } ok } if (Tmp-String-0) { update reply { Filter-Id += "fail 5" } }