zabbix郵件報警python腳本
阿新 • • 發佈:2018-04-06
zabbix python 腳本 郵件 linux 之前保存了一個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])
zabbix郵件報警python腳本