-
Problem report
-
Resolution: Fixed
-
Minor
-
None
-
Sprint 23, Sprint 24, Sprint 46, Nov 2018
-
1
Unable to pass argument to external check containing literal $ since everything is wrapped in double quotes. Escaping $ doesn't work also since sequence
\${code} would become
${code} by zabbix code here:
svn blame svn://svn.zabbix.com/trunk/src/zabbix_server/poller/checks_external.c
49450 wiper param_esc = zbx_dyn_escape_string(param, "\"\\"); 49450 wiper zbx_snprintf_alloc(&cmd, &cmd_alloc, &cmd_offset, " \"%s\"", param_esc);
Steps to reproduce:
create external check with key:
script.sh[login,passwor$d]
and file script.sh
#!/bin/bash echo $1 $2
Result:
this would turn to
login passwor
Expected:
login passwor$d
Suggested
Wrapping to single quotes instead of double quotes could help. Change how arguments are wrapped automatically:
zabbix key -> command script.sh[login,passwor$d] -> script.sh 'login' 'passwor$d' script.sh['login','passwor$d'] -> script.sh 'login' 'passwor$d' script.sh["login","passwor$d"] -> script.sh "login" "passwor$d"