Zabbix配置 - 操作

时间:2015-04-29 05:03:46

标签: zabbix

我配置的操作用于发送电子邮件通知。问题是,如果我在动作的名称和消息中使用宏,则不会发送电子邮件,如果仅使用纯文本,则可以成功发送电子邮件。 我使用的是媒体类型的脚本,脚本负责发送电子邮件。脚本如下:

#!/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

我想知道原因是消息中是否有一些特殊的字符,但即使我在主题和正文周围添加引号,它仍然不起作用。

1 个答案:

答案 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"