简单计划:定时检测威纶通触摸屏是否在线

版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/fengyu09/article/details/80213783

车间使用3个飞鱼星路由器做无线中继,其中有2级中继的,需要关注连在它们下面的威纶通触摸屏是否在线(通过MQTT发送数据到emqttd)。
Python实现,42行代码,先ping,而后发邮件。
发邮件,需要一个smtp服务账号,需要改成自己的。

import time
import os
import smtplib
from email.message import EmailMessage
from apscheduler.schedulers.blocking import BlockingScheduler

sched = BlockingScheduler()
hosts = [30, 102, 103, 201, 202, 203, 220]
status = {}
@sched.scheduled_job('interval', seconds=1440)
def my_job():   
    status.clear()
    i = 0
    for host in hosts:
        cmd = 'ping -n 1 -w 30 192.168.1.%d' % host
        res = os.system(cmd)
        if res != 0:
            status[host] = 'failed'
            i = i + 1
        else:
            status[host] = 'success'
    if len(status) > 0:
        c_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        print(c_time, status)
        # email
        msg = EmailMessage()
        msg.set_content(str(status))
        msg['Subject'] = '车间网络检查结果 %s, 失败%d' %  (c_time, i)
        msg['From'] = 'yusp@foxmail.com'
        msg['To'] = '475060921@qq.com'
        try:
            s = smtplib.SMTP_SSL('smtp.qq.com', 465)
            s.login('601192166@qq.com', 'acvbggred4mcabhkljhbe')
            s.send_message(msg)
            s.quit()
            print('邮件发送成功,在%s' % c_time)
        except smtplib.SMTPException as e:
            print(str(e))
            print('邮件发送成功,在%s' % c_time)

print('启动计划扫描任务...') 
sched.start()
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页