前面已经写过Python3发邮件,Python发微信的文章了。直接导入即可。

import configparser,requests
from time import sleep
import WeChat,Mail,datetime class checkurl(object):
def __init__(self,file):
self.file=file
self.cfg=configparser.ConfigParser() def cfg_load(self):
self.cfg.read(self.file)
self.allurl=self.cfg.items('yuming')
self.reload=self.cfg.get('time','reload')
self.mailto=self.cfg.items('mailto') def sendmessage(self,errinfo):
wechat.send('@all',errinfo)
for key,values in self.mailto:
mail.send(values,errinfo,'url访问失败报警') def senderror(self,errcont):
enow=datetime.datetime.now()
now=enow.strftime('%Y-%m-%d %H:%M:%S')
errfile=open('url.log','a')
errfile.write(now)
errfile.write(str(errcont))
errfile.write('\n')
errfile.close() def cfg_dump(self):
while True:
for k,v in self.allurl:
checknum=0
#设置重试错误次数
while checknum < 5:
try:
res=requests.get(v,timeout=20)
print(v,res.status_code)
res.close()
if res.status_code >= 400:
errinfo=v+' '+str(res.status_code)
self.sendmessage(errinfo)
self.senderror(errinfo)
break
except:
errinfo=v+' is error'
print(errinfo+'\r\n请稍等,正在第',checknum+1,'次重试...')
sleep(1)
if checknum == 4:
print('重试仍然无法连接,正在发送微信和邮件报警...')
self.sendmessage(errinfo)
self.senderror(errinfo)
checknum=checknum+1
print('-----------------------------------')
nextcheck=0
while nextcheck < int(self.reload):
print('距离下次检测还剩',int(self.reload)-nextcheck,'秒')
sleep(1)
nextcheck=nextcheck+1 if __name__ =='__main__':
mail=Mail.sendmail()
wechat=WeChat.WeChat()
check=checkurl('yuming.ini')
check.cfg_load()
check.cfg_dump()

  

下面是yuming.ini的配置

[yuming]
yuming1=https://www.baidu.com
yuming2=http://www.qq.com
yuming3=http://www.163.com [time]
reload=60 [mailto]
mail1=guoyabin@ccln.gov.cn
mail2=guoyabin@bj1921.com

  

最新文章

  1. SVN 服务启动报错 0x8007042a
  2. rigidbody2D.velocity 提示缺少using?用的unity5?
  3. 关于CAP定理的个人理解
  4. zabbix架构
  5. lastLogon和lastLogonTimestamp的区别
  6. Frogs&#39; Neighborhood
  7. openssl数字证书常见格式与协议介绍
  8. 添加多盟SDK 库函数
  9. DirectFB 之 字体显示
  10. solrcloud jsonfacet分组聚合 unique计数不准确
  11. Python 调用图像融合API
  12. Linux 端口转发一则
  13. POJ 1113 Wall(思维 计算几何 数学)
  14. react和vue的异同点
  15. 小程序使用wxParse解析html
  16. 吴裕雄 python 数据处理(3)
  17. 【转】mysql查看表空间占用情况
  18. 关于location.href赋值的php用法
  19. [ML] Gradient Descend Algorithm [Octave code]
  20. node.js和MongoDB学习网址

热门文章

  1. KMP算法解题模板(更新)
  2. 面渣逆袭:Java并发六十问,快来看看你会多少道!
  3. Web开发之HTTP协议
  4. Solon 开发,一、注入或手动获取配置
  5. github与gitlab创建新仓库
  6. 动态多条件mysql模糊查询
  7. 通过CVE-2021-43297漏洞在Apache Dubbo&lt;=2.7.13下实现RCE
  8. 在Django中使用zerorpc
  9. ssh 信任关系无密码登陆,清除公钥,批量脚本
  10. web前端基础之SCC(定位-z-index模态框)