我想发出该命令用户参数在 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