最近搭建了一个zabbix服务器,但是到邮件报警的时候出问题了,为什么发送老是发送个附件。脚本命令是echo "$3"|mail -s "$2" $1  应该是对着呢。

最后查了好多资料,实验了很多次,发现大致的原因。因为windows和linux的换行符不同导致的。

可以把附件file一下看到:

[root@zabbix ~]# file tcmime.1953.1953.2321.bin 

tcmime.1953.1953.2321.bin: UTF-8 Unicode text, with CRLF, LF line terminators

然后file 普通的文本文件

[root@zabbix alertscripts]# file 1.txt 

1.txt: UTF-8 Unicode text

使用vim 会显示附件的内容每行后面都有^M 。只要把这个^M去掉,然后发送的话就不会是附件的形式了。去掉^M可以使用dos2unix工具,yum直接下载个就行了。

有了思路然后把脚本修改成了:

#!/bin/sh

echo "$3" > /usr/local/zabbix/share/zabbix/alertscripts/1.txt

dos2unix /usr/local/zabbix/share/zabbix/alertscripts/1.txt 

mail -s "$2" $1 < /usr/local/zabbix/share/zabbix/alertscripts/1.txt

然后自己创建个1.txt文件,注意所有者要改为zabbix:zabbix,然后进行测试发送发送的是内容了。

具体应该还有其他更简单解决的方法,说不定配置文件修改下就行,但是我不知道,现在只能这样用了。谁有其他的方法可以给我说下,谢谢了。