检测服务器状态出现问题发送邮件

#coding: UTF-8

import smtplib
import time,sys,requests
from time import sleep
from subprocess import run,PIPE
from email.mime.text import MIMEText
from email.header import Header
#获取时间
ipaddress=input("请输入需要检测ip地址\n")
hostname=input('请输入该IP标识名,例如:***\n')
# 第三方 SMTP 服务
mail_host = "smtp.qq.com"  # 设置服务器
mail_user = "***********@qq.com"  # 用户名
mail_pass = "***************"  # 口令
sender = '*************@qq.com'
receivers = ['**********@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
count=1
sleeptime=0

def sendmail():#发送邮件
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)  # 25 为 SMTP 端口号
    smtpObj.login(mail_user, mail_pass)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
while True:
    localtime = time.asctime(time.localtime(time.time()))#格式化当前时间
    message = MIMEText('IP地址:' + ipaddress + '断网了!' + '断网时间' + localtime, 'plain', 'utf-8')
    message['From'] = Header("*****", 'utf-8')#这里指发送者名字
    message['To'] = Header("******", 'utf-8')#接收者名字
    subject = '淡定点,可能是掉包'
    if count>4:
        subject='他妈的网炸了'
    message['Subject'] = Header(hostname + subject + ',测试IP地址:' + ipaddress + ',断网时间' + localtime, 'utf-8')
    r = run('ping '+ipaddress,stdout=PIPE,stderr=PIPE,stdin=PIPE,shell=True)
    if r.returncode:
        print('IP'+ipaddress+'断网发生第{}次'.format(count)+'发生时间:'+localtime)
        count+=1
        if count ==5:
            sleeptime=count*60#4次之后防骚扰持续发送邮件
        try:
            sendmail()
        except smtplib.SMTPException:
            print("Error: 无法发送邮件")
    else:
        print(hostname+'网炸了吗?没炸')
        sleeptime=30
    print('冷却邮件发送'+str(sleeptime)+'秒')
    sleep(sleeptime)




  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值