【Nagios】利用sendEmail发警告邮件

sendEmail官方地址: http://caspian.dotconf.net/menu/Software/SendEmail/

Nagios发警告邮件默认是采用本机的smtp服务, 可以查看commands.cfg中关于发邮件的命令的定义, 使用本机的mail命令, 这就需要开启本机的smtp服务, 为了安全可以在防火墙上设置拒绝其他的机器连本机的25号端口. 假如网络里面有一个邮件服务器(比如公司自己的邮件服务器), 则可以直接使用这台现有的邮件服务器, 不用开启本机的smtp服务, 只需要重新定义命令使用第三方软件sendEmail.
安装:

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

[root@localhost src]# tar zxvf sendEmail-v1.56.tar.gz

[root@localhost src]# cd sendEmail-v1.56

[root@localhost sendEmail-v1.56]# cp sendEmail /usr/local/bin/

[root@localhost bin]# chmod +x /usr/local/bin/sendEmail

使用:
   直接运行sendEmail或者/usr/local/bin/sendEmail会显示使用方法

-f 表示发送者的邮箱
-t 表示接收者的邮箱-
s
表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)
-m 表示邮件的内容
如果你不带-m参数的话,就会提示你自行输入,输入完成后使用CTRL-D来结束

测试:
 sendEmail �Cf ******@163.com �Ct ######@foxmail.com �Cu “test”-m “asdf”

这里发送者不能用qq邮箱,测试开始使用QQ邮箱无法发送

也可以将一个文件的内容作为邮件的正文发出去的:
cat 文件名 | /usr/local/bin/sendEmail �Cf [email protected] �Ct
***@foxmail.com �Cs mail.test.com �Cu “from nagios” �Cxu nagios �Cxp p#3isoda

报警配置:
配置接收nagios告警的邮件地址:
[root@localhost ~]# vim /usr/local/nagios/etc/objects/contacts.cfg

修改commands.cfg:
把email的主机和服务命令最后的/usr这里路径改成sendEmail复制到的路径,填写发送方,接收方这里用的是引用,引用的是contacts.cfg里的email地址
Host:
               command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/local/bin/sendEmail -f [email protected] -t $CONTACTEMAIL$ -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$"
Service:

        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/local/bin/sendEmail -f [email protected] -t $CONTACTEMAIL$ -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"



你可能感兴趣的:(sendEmail,nagios)