我配置的操作用于发送电子邮件通知。问题是,如果我在动作的名称和消息中使用宏,则不会发送电子邮件,如果仅使用纯文本,则可以成功发送电子邮件。 我使用的是媒体类型的脚本,脚本负责发送电子邮件。脚本如下:
#!/bin/sh
export smtpemailfrom=zabbix@yourdomain.com
export zabbixemailto=$1
export zabbixsubject=$2
export zabbixbody=$3
export smtpserver=yoursmtpserver.com
export smtplogin=smtpuser
export smtppass=smtppassword
/usr/bin/sendEmail -f $smtpemailfrom -t $zabbixemailto -u $zabbixsubject -m $zabbixbody -s $smtpserver:25 -xu $smtplogin -xp $smtppass
我想知道原因是消息中是否有一些特殊的字符,但即使我在主题和正文周围添加引号,它仍然不起作用。
答案 0 :(得分:0)
建议将输入变量放在双引号中。
例如,电子邮件主题可能包含多个单词。以下内容无法实现:
$ export subject=hello world
$ echo $subject
hello
同样,Zabbix宏中使用的花括号对shell有特殊含义,请参阅Bash subshell creation with curly braces问题。
因此,您应该对变量扩展进行双重引用,至少对于那些您不确定内容的变量:
#!/bin/sh
export smtpemailfrom=zabbix@yourdomain.com
export zabbixemailto="$1"
export zabbixsubject="$2"
export zabbixbody="$3"
export smtpserver=yoursmtpserver.com
export smtplogin=smtpuser
export smtppass=smtppassword
/usr/bin/sendEmail -f $smtpemailfrom -t "$zabbixemailto" -u "$zabbixsubject" \
-m "$zabbixbody" -s $smtpserver:25 -xu $smtplogin -xp "$smtppass"