Zabbix UserParameters tem problemas com parênteses?

0

Gostaria de emitir esse comando como UserParameter no zabbix 3.0

[ "$((exit 1 || echo 'col1 -1') | awk '{print $2}')" == 0 ]  && echo OK || echo FAILED
# alternatively
test "$((exit 1 || echo 'col1 -1') | awk '{print $2}')" == 0  && echo OK || echo FAILED

Acionar isso no bash funciona perfeitamente (retornando FAILED), mas o erro de sintaxe de retorno do zabbix-agent:

$ sudo -u zabbix zabbix_agentd -t testparam
testparam   [t|sh: 1: Syntax error: Missing '))']

Definir UnsafeUserParameters não tem efeito.

Como fazer isso funcionar?

    
por ITL 08.06.2016 / 17:02

1 resposta

2

Provavelmente, isso ocorre porque o Zabbix executa os parâmetros do usuário usando /bin/sh , não /bin/bash . Então você pode tentar adaptar seu comando para trabalhar com /bin/sh ou prefixar com /bin/bash , da seguinte forma:

UserParameter=testparam,/bin/bash -c '...'

Alternativamente, você pode tentar reescrever seu comando em um estilo semelhante a este:

UserParameter=testparam,var='exit 1 || echo 'col1 -1''; test "'echo $var | awk '{ print $2 }''" = 0 && echo OK || echo FAILED
    
por 08.06.2016 / 17:44

Tags