Я хотел бы выполнить эту команду как UserParameter в 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

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

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

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

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

1 ответ1

2

Вероятно, это связано с тем, что Zabbix выполняет пользовательские параметры, используя /bin/sh , а не /bin/bash . Таким образом, вы можете попытаться адаптировать свою команду для работы с /bin/sh или добавить к ней префикс /bin/bash , например так:

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

В качестве альтернативы вы можете попробовать переписать вашу команду в стиле, подобном следующему:

UserParameter=testparam,var=`exit 1 || echo 'col1 -1'`; test "`echo $var | awk '{ print $2 }'`" = 0 && echo OK || echo FAILED

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .