python3监控网站状态
2024-09-08 11:39:59
前面已经写过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
最新文章
- SVN 服务启动报错 0x8007042a
- rigidbody2D.velocity 提示缺少using?用的unity5?
- 关于CAP定理的个人理解
- zabbix架构
- lastLogon和lastLogonTimestamp的区别
- Frogs&#39; Neighborhood
- openssl数字证书常见格式与协议介绍
- 添加多盟SDK 库函数
- DirectFB 之 字体显示
- solrcloud jsonfacet分组聚合 unique计数不准确
- Python 调用图像融合API
- Linux 端口转发一则
- POJ 1113 Wall(思维 计算几何 数学)
- react和vue的异同点
- 小程序使用wxParse解析html
- 吴裕雄 python 数据处理(3)
- 【转】mysql查看表空间占用情况
- 关于location.href赋值的php用法
- [ML] Gradient Descend Algorithm [Octave code]
- node.js和MongoDB学习网址