Zabbix UserParameters的括号有问题吗?


0

我想发出那个命令 用户参数 在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 '))']

设置 UnsafeUserParameters 没有效果。

怎么运行?

Answers:


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

无法使用此功能 /bin/bash -c '...' 也不 /bin/bash -c "..." (我也逃过了引号)。
ITL

我已经用另一个建议更新了答案。
asaveljevs

重写的命令有效
ITL
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.