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)

  

 

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