0
点赞
收藏
分享

微信扫一扫

给用户开发上报数据状态邮件

玉字璧 2022-02-16 阅读 33
python
# -*- coding: UTF-8 -*-
import os
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.header import Header
from time import sleep
from glob import glob
import  datetime

def send_mail(status):
    if  status == '成功':
        msg = MIMEText(f'发布状态:{status}', 'plain', 'utf-8')
        print(222)
    else:
        cname = get_fail_cityname()
        msg = MIMEText(f'发布状态:{status}{cname}没有上报成功 ','plain', 'utf-8')
    msg['From'] = formataddr(["lg", mail_user])
    msg['To'] = formataddr(["河北", receivers])
    subject = '上报情况'
    msg['Subject'] = Header(subject,'utf-8')

    server = smtplib.SMTP_SSL(mail_host, 465)
    server.login(mail_user, mail_passwd)
    server.sendmail(mail_user,[receivers,receivers2], msg.as_string())
    server.quit()

def str_date():
    yestoday = datetime.date.today()
    str_yestody = yestoday.strftime('%Y%m%d')  # 20220211
    return str_yestody

def get_fail_cityname():
    for i in city:
        if i not in get_city:   #得到缺失的城市名称
            return  citycode[i]

if __name__ == '__main__':

    path = r'C:\Users\lg\Desktop\study\Python\2'
    citycode = {'130200':'唐山市','130300':'秦皇岛市','130400':'邯郸市',
                '130500':'邢台市','130600':'保定市','130700':'张家口市',
                '130800':'承德市','130900':'沧州市','131000':'廊坊市','131100':'衡水市'}
    city = ['130200', '130300', '130400', '130500', '130600', '130700', '130800', '130900', '131000', '131100']
    get_city = []
    sucess_num = 10

    mail_host = 'smtp.126.com'
    mail_port = 465
    mail_user = 'lig3@126.com'
    mail_passwd = 'DJEXSOCRR'
    receivers = '1698@qq.com'
    receivers2 = 'hb@163.com'

    os.chdir(path)
    dd = str_date()



    while 1:
        list = glob(f'*{dd}.end')

        if list:
            for i in list:
                get_city.append(i[:6])
            num = len(list)
            print('检测到已经发布')
            if num == sucess_num:
                a = '成功'
                send_mail(a)
                sleep(46200)
            else:
                a = '失败'
                send_mail(a)
                sleep(46200)
        else:
            sleep(300)
            print('没有发布,再次检测')

shell调用 check.sh:

#!/bin/bash

num=`ps aux |grep submit |grep -v 'grep' |wc -l`

if [ ${num} -eq 0 ];then
   /public/software/anaconda/bin/python /root/lg/submit.py &
else
  exit
fi
举报

相关推荐

0 条评论