天天看点

zabbix邮件报警脚本

Zabbix邮件报警脚本

    对于目前的运营商来说,25端口基本上被禁用了,只能使用ssl/tls加密协议来发收邮件,对于zabbix来说邮件报警还是比较常用的,下面为报警脚本,亲测时可以正常收到邮件的,可以先进行测试是否能正常收到邮件在正式配置到zabbix上。以163邮件为例:

<code>[root@localhost ~]</code><code># cat zabbix_mail.py </code>

<code>#!/usr/bin/python</code>

<code># coding=utf-8</code>

<code>#zabiix 邮件报警脚本</code>

<code>#测试方法:python zabbix_mail.py [email protected] test test</code>

<code>#能正常发送邮件说明成功 </code>

<code>import</code> <code>smtplib</code>

<code>import</code> <code>sys</code>

<code>from email.mime.text </code><code>import</code> <code>MIMEText</code>

<code> </code> 

<code>class send_mail():</code>

<code>    </code><code>mail_host=</code><code>"smtp.163.com"</code>

<code>    </code><code>mail_user=</code><code>"[email protected]"</code>

<code>#注:此地方的密码为POP3/SMTP/IMAP客户端授权的授权码,不是邮箱的登录密码</code>

<code>    </code><code>mail_pass=</code><code>"XXXXXXXXXX"</code>

<code>    </code><code>mail_postfix=</code><code>"163.com"</code>

<code>    </code><code>def __init__(self,sub,content):</code>

<code>        </code><code>self.me=</code><code>"Zabbix-Alter"</code><code>+</code><code>"&lt;"</code><code>+self.mail_user+</code><code>"@"</code><code>+self.mail_postfix+</code><code>"&gt;"</code>

<code>        </code><code>self.msg = MIMEText(content,_subtype=</code><code>'html'</code><code>,_charset=</code><code>'utf-8'</code><code>)</code>

<code>        </code><code>self.msg[</code><code>'From'</code><code>] = self.me</code>

<code>        </code><code>self.msg[</code><code>'Subject'</code><code>] = sub</code>

<code>    </code><code>def sendMessage(self,user):</code>

<code>        </code><code>self.msg[</code><code>'To'</code><code>] = </code><code>";"</code><code>.</code><code>join</code><code>(user)</code>

<code>        </code><code>try:</code>

<code>            </code><code>s = smtplib.SMTP_SSL(host=self.mail_host,port=465)</code>

<code>            </code><code>s.login(self.mail_user,self.mail_pass)</code>

<code>            </code><code>s.sendmail(self.me, user, self.msg.as_string())  </code>

<code>#发送邮件</code>

<code>            </code><code>s.close()</code>

<code>        </code><code>except Exception, e:</code>

<code>            </code><code>print str(e)</code>

<code>if</code> <code>__name__ == </code><code>'__main__'</code><code>:</code>

<code>    </code><code>mailto_list=[]</code>

<code>    </code><code>mailto_list.append(sys.argv[1])</code>

<code>    </code><code>s = send_mail(sys.argv[2],sys.argv[3])</code>

<code>    </code><code>s.sendMessage(mailto_list)</code>

<code></code>

本文转自 zhangguangyi 51CTO博客,原文链接:http://blog.51cto.com/bosszhang/2055894