12、Python 運行代碼監控及郵件發送

問題描述:使用python進行運行程序監控,一旦程序出現問題,立即重新啓動,並進行郵件發送提醒

 


import os
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import time
os.system("nohup python3 generate_waiting.py  >> waiting.log 2>&1 &") # 前提 generate_waiting 存在
os.system("nohup python3 generate_running.py  >> running.log 2>&1 &") # 前提 generate_running 存在

def send_email(info):
    from_addr = '[email protected]' #發件郵箱
    password = 'jelpkwpaxxejbdfh' #郵箱授權密碼
    to_addr = ['[email protected]','[email protected]'] #收件郵箱
    smtp_server = 'smtp.qq.com' #SMTP服務器

    message ='hello,world!'
    msg = MIMEText(message,'plain','utf-8')
    msg['Subject'] = Header("來自Python的郵件",'utf-8')
    msg['From'] = Header(from_addr)



    for email_id,email in enumerate(to_addr):
      msg['To'] = Header(email,'utf-8')
      try:
         server = smtplib.SMTP(smtp_server,25) #第二個參數爲默認端口爲25,有些郵件有特殊端口
         print('開始登錄')
         server.login(from_addr,password) #登錄郵箱
         print('登錄成功')
         print("郵件開始發送")
         server.sendmail(from_addr,email,msg.as_string())  #將msg轉化成string發出
         server.quit()
         print("郵件發送成功")
      except smtplib.SMTPException as e:
         print("郵件發送失敗",e)

while True:
  wait_process ="./.wait_pid"
  os.system("ps -ef|grep generate_waiting.py|grep -v grep >%s" % wait_process)
  if not(os.path.getsize(wait_process)):
    print ("-----generate_waiting---- restart")
    os.system("nohup python3 generate_waiting.py  >> waiting.log 2>&1 &")
    send_email("-----generate_waiting---- restart")
  else:
    print("-----generate_waiting---- normal")
    
  run_process ="./.runn_pid"
  os.system("ps -ef|grep generate_running.py|grep -v grep >%s" % run_process)
  if not(os.path.getsize(run_process)):
    print ("-----generate_running---- restart")
    os.system("nohup python3 generate_running.py  >> running.log 2>&1 &") 
    send_email("-----generate_running---- restart")   
  else:
    print("-----generate_running---- normal")
  time.sleep(15)

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章