1. 程式人生 > >linux下發郵件報警提醒的兩個方法

linux下發郵件報警提醒的兩個方法

在搭建zabbix監控時,要使用郵件報警提醒,最好是使用163郵箱,比較容易設定smtp。

1、首先要設定郵箱啟用smtp,參考https://blog.csdn.net/suxiaohanqi/article/details/56844087

    給你的郵箱設定一個客戶端授權密碼

    注意,此密碼不能與郵箱的登陸密碼相同。

    接下來的指令碼中,都使用的是這個客戶端授權密碼

2、查閱資料後發現2個比較方便的發郵件方式,更推薦使用第二種使用python

    (1) 一個是使用mailx,詳細參考https://blog.csdn.net/outman1023/article/details/79199947

         yum -y install mailx後,

           vim /etc/mail.rc     (如果mail.rc檔案沒有,就手動建立,新增如下內容)

set sendcharsets=iso-8859-1,utf-8
set from=xxx@163.com
set smtp=smtp.163.com:25
set smtp-auth-user=xxx@163.com
set smtp-auth-password=****
  •        注意,密碼是163郵箱的客戶端授權密碼,不是郵箱登陸密碼
以下命令自己給自己發個郵件試試,成功

      echo "zabbix test mail" |mail -s "zabbix" [email protected]

 

    (2)另外一個方式就是python程式了。參考https://blog.csdn.net/wszll_alex/article/details/77247696

             本人比較傾向於使用新的軟體,於是從官網下載安裝Python-3.6.4.tgz

             tar xvf Python-3.6.4.tgz -C /usr/src
             cd /usr/src/Python-3.6.4
             ./configure --prefix=/usr/local/python364
             make
             make install

               建立一個send_mail.py發郵件指令碼檔案,內容如下:         

注意,口令是163郵箱的客戶端授權密碼,不是郵箱登陸密碼
#!/usr/local/python364/bin/python3.6
#coding:utf-8
import smtplib  
from email.mime.text import MIMEText  
from sys import argv

mailto_list=[] 
mail_host="smtp.163.com:25"  #設定伺服器
mail_user="[email protected]"     #發件使用者名稱(換成自己的)
mail_pass="xxxxxxxx"   #口令(換成自己的) 
#mail_postfix="163.com"  #發件箱的字尾
debug_level=0       #是否開啟debug

def send_mail(to_list,sub,content):  
    me=mail_user
    msg = MIMEText(content,_subtype='plain',_charset='utf-8')  
    msg['Subject'] = sub  
    msg['From'] = me  
    msg['To'] = ";".join(to_list)  
    try:  
        server = smtplib.SMTP()  
        server.set_debuglevel(debug_level)    
        server.connect(mail_host)  
        server.login(mail_user,mail_pass)  
        server.sendmail(me, to_list, msg.as_string())  
        server.close()  
        return True  
    except Exception as e:  
        print('except:',e)  
        return False  
if __name__ == '__main__':
    try:
        mailto_list=argv[1].split(';')
        sub=argv[2]
        content=argv[3]
    except:
        print("python send_mail.py '[email protected];[email protected]' sub content")
        exit()

    if send_mail(mailto_list,sub,content):  
        print("傳送成功")  
    else:  
        print("傳送失敗")

然後新增可執行許可權   chmod +x send_mail.py

發郵件給自己測試:

./sendmail.py '[email protected]' sub content

相關推薦

no