Zabbix UserParameters 的括号有问题?

Zabbix UserParameters 的括号有问题?

我想发出该命令用户参数在 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 shell 上启动该命令非常完美(返回 FAILED),但是 zabbix-agent 返回语法错误:

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

环境不安全的用户参数没有效果。

如何让它运行?

答案1

这可能是因为 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

相关内容