Zabbix UserParameters haben Probleme mit Klammern?

764
ITL

Ich möchte diesen Befehl als UserParameter in zabbix 3.0 ausgeben

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

Das Abfeuern auf die Bash-Shell funktioniert einwandfrei (gibt FAILED zurück), aber der Zabbix-Agent gibt einen Syntaxfehler zurück:

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

Die Einstellung von UnsafeUserParameters hat keine Auswirkungen.

Wie bekomme ich das zum Laufen?

0

1 Antwort auf die Frage

2
asaveljevs

Dies ist wahrscheinlich darauf zurückzuführen, dass Zabbix Benutzerparameter verwendet /bin/sh, jedoch nicht /bin/bash. Sie können also versuchen, Ihren Befehl so anzupassen, dass Sie mit ihm arbeiten, /bin/shoder ihm ein vorangestelltes Wort voranstellen /bin/bash:

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

Alternativ möchten Sie vielleicht versuchen, Ihren Befehl in einem ähnlichen Stil zu schreiben:

UserParameter=testparam,var=`exit 1 || echo 'col1 -1'`; test "`echo $var | awk '{ print $2 }'`" = 0 && echo OK || echo FAILED 
Dies konnte weder mit / bin / bash -c '...' `noch mit / bin / bash -c" ... "` ausgeführt werden (ich habe auch Anführungszeichen verwendet). ITL vor 7 Jahren 0
Ich habe die Antwort mit einem alternativen Vorschlag aktualisiert. asaveljevs vor 7 Jahren 0
Der umgeschriebene Befehl funktioniert ITL vor 7 Jahren 0