首页 >>  正文

python+在线编程

来源:baiyundou.net   日期:2024-09-20

作者:王忘杰

全民制作人大家好,我是学习python两天半的练习生王忘杰,喜欢路由交换、linux、网络安全,开整!这是我的第二篇0基础python文章,请大家支持,谢谢~

开发思路
用于监控指定的URL,在我的场景中,我是从腾讯VPS上监控公司宽带出口,当URL访问超时时,即为宽带故障。
设计思路很简单,访问失败发送告警,访问成功发送恢复通知,同时要使用配置文件进行配置,防止持续重复告警。

绘制开发流程图


使用python语言实现

#!/usr/bin/python3import requests
import time
import json
import os# 监测URL是否正常响应def url_check(url):    # 当前时间    check_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
   try:        # 请求URL, 设置3s超时, 忽略SSL证书        r = requests.get(url, timeout=3, verify=False)
       if r.status_code == 200:
           fo = open(config,"r")
           line = fo.read(1)
           print(line)            #判断配置文件内容            if line == "1":
               print("发送报警")
               fo.close()
               fo = open(config, "w")
               fo.write('0')
               print("配置重置为0")                # 请求响应状态                msg = "监控的URL:%s%sURL恢复状态正常:%s%s监测时间:%s" % (
               url, "nn", r.status_code, "nn", check_time)                # 推送消息                yun_push(msg)
           else:
               print("当前配置为",line)
               fo = open(config, "w")
               fo.write('0')
               print("配置重置为0")
       else:
           fo = open(config, "r")
           line = fo.read(1)
           print(line)
           if line == "1":
               print("退出程序")
           else:
               print("发送报警")
               fo.close()
               fo = open(config, "w")
               fo.write('1')
               print("配置重置为1")                # 请求响应状态                msg = "监控的URL:%s%sURL访问异常:%s%s监测时间:%s" % (
                   url, "nn", r.status_code, "nn", check_time)                # 推送消息                yun_push(msg)
   except:
       fo = open(config, "r")
       line = fo.read(1)
       print(line)
       if line == "1":
           print("退出程序")
       else:
           print("发送报警")
           fo.close()
           fo = open(config, "w")
           fo.write('1')
           print("配置重置为1")            # 请求响应状态            msg = "监控的URL:%s%sURL访问失败,无法连接%s监测时间:%s" % (
               url, "nn", "nn", check_time)            # 推送消息            yun_push(msg)

def yun_push(content):
   url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=用自己的'
   s = json.dumps({'msgtype': 'text', 'text': {"content" : content}})
   print(requests.post(url, data=s).text)

if __name__ == '__main__':    #判断配置文件是否存在,不存在则生成配置文件并退出,配置文件则存在执行    config = './baidu.config'
   if not os.path.exists(config):
       print("配置文件不存在")
       file = open(config,'w')
       file.close()
       print("配置文件已生成")
   else:
       print("配置文件存在,执行URL检测")
       url_check("https://www.baidu.com/")

运行效果


正式使用
在VPS部署python脚本,并设置定时任务即可


查看文章精彩评论,请前往什么值得买进行阅读互动

","gnid":"96c6a833d821e0468","img_data":[{"flag":2,"img":[{"desc":"","height":"274","title":"","url":"https://p0.ssl.img.360kuai.com/t015394727360c3cdc6.jpg","width":"600"},{"desc":"","height":"616","title":"","url":"https://p0.ssl.img.360kuai.com/t016ff92dc7f2116c3c.jpg","width":"359"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1683810195000,"pure":"","rawurl":"http://zm.news.so.com/41b69145e2771cb08cd67bac9f05abc6","redirect":0,"rptid":"4cdf902d8b0d23e5","rss_ext":[],"s":"t","src":"什么值得买","tag":[{"clk":"ktechnology_1:机器人","k":"机器人","u":""}],"title":"0基础上手python编程,实践URL监控+企业微信机器人告警

沈疯转1632Python主要能做什么?
杜费鸦19157877414 ______ Python的优势有必要作为第一步去了解,Python作为面向对象的脚本语言,优势就是数据处理和挖掘,这也注定了它和AI、互联网技术的紧密联系.网站开发.Python数据处理很在线,用它编写网站可以为大众提供优秀的服务,主要使用django...

沈疯转1632输入一个十进制数,输出一个二进制串,怎么用Python编程??? -
杜费鸦19157877414 ______ python3.x 及 python2.x均可运行: 1 2 n =int(input()) print(bin(n)[2:])

沈疯转1632python编程 小小计算器
杜费鸦19157877414 ______ 你使用了非ascii字符,就是第三行中的中文'符号', 把它改成英文就好了. 或者,你也可以在文件最前面,加上一行: # -*- coding: cp936 -*-

沈疯转1632如何使用Python实现并发编程 -
杜费鸦19157877414 ______ 多线程几乎是每一个程序猿在使用每一种语言时都会首先想到用于解决并发的工具(JS程序员请回避),使用多线程可以有效的利用CPU资源(Python例外).然而多线程所带来的程序的复杂度也不可避免,尤其是对竞争资源的同步问题.然...

沈疯转1632python编程 - - django框架,想要添加一个表进到数据库里 -
杜费鸦19157877414 ______ 代码部分:from django.db import models class Student(models.Model): name = models.CharField(max_length=30) grade = models.IntegerField()执行部分...

沈疯转1632python为什么叫爬虫?
杜费鸦19157877414 ______ 爬虫通常指的是网络爬虫,就是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.因为python的脚本特性,python易于配置,对字符的处理也非常灵活,加上...

沈疯转1632可以用 Python 编程语言做哪些神奇好玩的事情 -
杜费鸦19157877414 ______ 机器学习,比如手写字识别,人脸识别,垃圾邮件处理等. 当然还可以画图,和matlab类似,不过是工业级的. 也许最初设计 python 这种语言的人并没有想到今天python 会在工业和科研上获得如此广泛的使用.著名的自由软件作者eric ...

沈疯转1632python远程操作windows服务器有什么方案 -
杜费鸦19157877414 ______ 可以使用python+paramiko. paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 使用paramiko可以很好的解决以下问题: 需要使用windows客户端, 远程连接到Linux服务器,查看上面的日志状态,批量配置远程服务器,文件上传,文件下载等 具体可以参考: http://www.paramiko.org/

沈疯转1632python编程.假定输入字符串中只包含字母和*号,请编写函数fun,它的功能是将字符串中间的*号 -
杜费鸦19157877414 ______ # -*- coding: UTF-8 -*- import re __author__ = 'lpe234' raw_str = '****' def filter_star(_raw_str): begin_len = len(re.findall(r'(^\**?)[a-zA-Z]', _raw_str)[0]) if re.findall(r'(^\**?)[a-zA-Z]', _raw_str) else 0 end_len = len(re.findall(r'[a-zA-Z](\**?

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024