利用Python实现网址监控

就是用Py写的一个烂脚本,看看就行了,大佬忽略即可

原本是使用shell脚本无限循环来实现定时网址监控,后来经用户反馈原脚本在部分服务器上运行会大量占用服务器资源

首先来展示一下原(经典)脚本

#!/bin/bash
declare -i step
step=秒数
for ((i = 0; i <= 60; i += step))
do
    curl -k -sS --connect-timeout 10 -m 60 '网址'
    echo -e "\n----------------------------------------------------------------------------"
    endDate=`date +"%Y-%m-%d %H:%M:%S"`
    echo "★[$endDate] 监控执行成功"
    echo "----------------------------------------------------------------------------"
    sleep $step
done
exit 0

最终也是没有找到经典脚本大量占用服务器资源的原因 于是就想起了以简单易学拓展性高著称的Python,而大部分站长使用的宝塔面板也预装了Python3

下面来看一下成品(在大佬眼里不过是渣渣而已 )

import requests
import time

def TimedTask(n):
    while True:
        current_time = int(time.time())
        localtime = time.localtime(current_time)
        dt = time.strftime('%Y:%m:%d %H:%M:%S', localtime)
        response = requests.get("需要监控的网址")
        response1 = requests.get("需要监控的网址1")
        response2 = requests.get("需要监控的网址2")
        response3 = requests.get("需要监控的网址3")
        response4 = requests.get("需要监控的网址4")
        response5 = requests.get("需要监控的网址5")  #若您没有这么多的网址需要监控,可以删掉多余的response整行及下方print语句中对应的状态码输出字段
        print (dt+'访问成功','1.'+response.text,'2.'+response1.text,'3.'+response2.text,'4.'+response3.text,'5.'+response4.text,'6.'+response5.text) #打印输出当前时间及页面返回信息
        print(response.status_code,response1.status_code,response2.status_code,response3.status_code,response4.status_code,response5.status_code)
      #打印出所有网址任务的网页状态码
        time.sleep(n)
TimedTask(5) #数字为监控频率,默认为5s一次

进程守护方式这里不过多介绍,通过宝塔定时任务的方式仅给出一个简单思路

由于宝塔面板的定时任务具有定时启动执行的特性,其次为了防止Python超时异常终止,所以我们选定一个或多个时间点进行杀死并重新启动任务

文末了,你还看什么

转载请注明出处,感谢

打赏