У Zabbix UserParameters есть проблемы с круглыми скобками?

679
ITL

Я хотел бы выполнить эту команду как UserParameter в zabbix 3.0

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

Запуск в оболочке bash работает отлично (возвращает FAILED), но zabbix-agent возвращает синтаксическую ошибку:

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

Установка UnsafeUserParameters не имеет никакого эффекта.

Как заставить это работать?

0

1 ответ на вопрос

2
asaveljevs

This is probably because Zabbix executes user parameters using /bin/sh, not /bin/bash. So you can either try to adapt your command to work with /bin/sh or prefix it with /bin/bash, like so:

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

Alternatively, you may wish to try rewriting your command in a style similar to this:

UserParameter=testparam,var=`exit 1 || echo 'col1 -1'`; test "`echo $var | awk '{ print $2 }'`" = 0 && echo OK || echo FAILED 
Не удалось запустить его ни с помощью `/ bin / bash -c '...'`, ни `/ bin / bash -c" ... "` (я также избежал кавычек). ITL 7 лет назад 0
Я обновил ответ альтернативным предложением. asaveljevs 7 лет назад 0
Переписанная команда работает ITL 7 лет назад 0

Похожие вопросы