zabbix邮件报警python脚本

之前保存了一个zabbix的邮件脚本,这次在使用中遇到了一些问题,这里合大家分享一下。

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import smtplib
import sys
from email.mime.text import MIMEText
from email.header import Header

def send_mail(to_email,subject,message):
    sender = '[email protected]'
    receiver = to_email

    subject = 'python email test'
    smtpserver = 'smtp.163.com'
    username = 'xxxxx'
    password = 'xxxxx'

    msg = MIMEText(message, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['from'] = sender
    msg['to'] = receiver

    smtp = smtplib.SMTP()
    smtp.connect(smtpserver)
    smtp.login(username, password)
    smtp.sendmail(sender, to_email, msg.as_string())
    smtp.quit()
if __name__ == '__main__':
    send_mail(sys.argv[1],sys.argv[2],sys.argv[3])

当程序运行到 smtp.connect(smtpserver) 的时候,就卡住了,在本地Windows PC上使用pycharm执行就没有问题

当时在网上找了各种资料,什么加端口,ping smtp,dig smtp的,都不好使,最后又被我发现了一个脚本,使用了其他的方法,不在使用 smtp.connect

脚本如下:脚本使在菜鸟教程中找到的

#!/usr/bin/python# -*- coding: UTF-8 -*-
 import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr
 my_sender='[email protected]'    # 发件人邮箱账号my_pass = 'xxxxxxxxxx'              # 发件人邮箱密码my_user='[email protected]'      # 收件人邮箱账号,我这边发送给自己def mail():    ret=True
    try:        msg=MIMEText('填写邮件内容','plain','utf-8')
        msg['From']=formataddr(["FromRunoob",my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To']=formataddr(["FK",my_user])              # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg['Subject']="菜鸟教程发送邮件测试"                # 邮件的主题,也可以说是标题
 
        server=smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret=False
    return ret
 ret=mail()if ret:    print("邮件发送成功")else:    print("邮件发送失败")

里面调用的是 server=smtplib.SMTP_SSL 经过我测试,只要网络波动不是很大,基本邮件都可以发送成功

下面是我更改后的,zabbix调用的脚本:

#!/usr/bin/env python
#_*_ coding:utf-8 _*_

import smtplib, sys
from email.mime.text import MIMEText
from email.utils import formataddr

def send_mail(to_email, subject, message):

    #邮箱地址和邮箱密码
    my_sender = '[email protected]'
    my_pass = 'xxxxx'
    my_user = to_email

    #发送邮件的信息主体,发件人,收件人,内容
    msg = MIMEText(message, 'plain', 'utf-8')
    msg['From'] = formataddr(["Zabbix", my_sender])
    msg['To'] = formataddr(["Ops", my_user])
    msg['Subject'] = subject

    #发送邮件
    server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
    server.login(my_sender, my_pass)
    server.sendmail(my_sender, [my_user, ], msg.as_string())
    server.quit()

if __name__ == '__main__':
    send_mail(sys.argv[1],sys.argv[2],sys.argv[3])

原文地址:http://blog.51cto.com/10309478/2095188

时间: 2024-08-02 12:11:03

zabbix邮件报警python脚本的相关文章

zabbix邮件告警python脚本

#!/usr/bin/python # -*- coding: utf-8 -*- """ Zabbix SMTP Alert script from qq. auth:json """ import sys import email import smtplib import os from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipar

Python通过smtp服务发送电子邮件给指定用户(适用于Zabbix邮件报警)

当下免费的邮件服务很多,例如163企业邮箱.QQ企业邮箱等.不需要自己搭建邮件服务器发送邮件给指 定用户,只需要注册任何一个支持smtp协议的邮箱就可以实现发送邮件.发送邮件可以通过Linux命令.自己编写的Shell脚本,也可以通过Python写的Python脚本. 如下代码是一个简单却实用的示例.默认无参数执行时,发送预设的邮件主题和邮件内容到预设的用户.带参数执行时将指定的主题和邮件内容发送到指定的用户.带参数执行可用于Zabbix邮件报警脚本. 对于Zabbix2.x可以直接填写脚本名字

Zabbix邮件报警配置

一.安装sendmail或者postfix(安装一种即可) yum install sendmail                #安装 service sendmail start              #启动 chkconfig sendmail on                #设置开机启动 或者 yum install postfix service postfix start chkconfig postfix on 二.安装邮件发送工具mailx yum install m

zabbix 邮件报警(五)

一.sendEmail配置zabbix邮件报警 1.下载sendEmail: wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz 2.配置sendEmail: # yum -y install perl-Net-SSLeay perl-IO-Socket-SSL # 安装组件 # tar xf sendEmail-v1.56.tar.gz -C /usr/src/ # cd /usr/src

zabbix 邮件报警的配置

一.安装以及配置邮件服务 1.查看是否已经安装该服务 rpm -qa | grep mailx    //如果已经安装则无需再安装 2.安装 yum install mailx 3.修改以下配置文件 vim /etc/mail.rc 添加如下内容: set [email protected] smtp=smtp.qq.com               //填写自己邮箱的地址 set smtp-auth-user=用户名  smtp-auth-password=密码     //邮箱的用户名以及

zabbix邮件报警发送至qq邮箱

zabbix邮件报警设置 第一.安装邮件发送工具mailx 这里我选择的是mailx,所以的关闭其他的邮件发送工具 service sendmail  start #开启,因为发送邮件需要开启25端口   chkconfig sendmail  off #禁止开机启动   service postfix  stop   chkconfig postfix  off 执行安装mailx的命令:yum install mailx 第二.配置Zabbix服务端外部邮箱 打开文件vi /etc/mail

邮件发送Python脚本

#!/usr/bin/env python2 #-*- coding: utf-8 -*- #导入smtplib,sys import smtplib,sys from email.mime.text import MIMEText def send_mail(sub,content): #要发给谁,这里发给1个人 mailto_list=["[email protected]", "[email protected]"] #设置服务器用户名.口令以及邮箱后缀 ma

zabbix 邮件报警设置

zabbix 邮件报警设置 1.创建报警类型 登陆到zabbix--------------管理-----------示警媒体类型的配置-------------创建示警媒体类型 2创建一个动作 选择配置----------动作-----------事件源选择触发器----------创建动作 1.添加一个zabbix报警用户 选择管理------------用户------------------创建用户

邮件报警shell脚本

温馨提示  首先要安装postfix 或者 sendmail 等邮件服务器 1.Apache #!/bin/bash #apache.sh nc -w2 localhost 80 if[ $? -ne 0 ] then echo "apache is down,please check" | mail [email protected] -s "apache is down" /usr/local/apache2/bin/apachectl restart fi 说