Web服务质量监控python脚本

import os,sys
import time
import pycurl
from io import BytesIO

buffer = BytesIO()
URL = 'https://www.baidu.com'			#探测质量的目标URL
c = pycurl.Curl()				#创建一个Curl对象
c.setopt(pycurl.URL, URL)		#定义请求的URL常量
c.setopt(pycurl.CONNECTTIMEOUT, 50)  	#定义请求的连接等待是键
c.setopt(pycurl.TIMEOUT, 50)				#定义超时时间
c.setopt(pycurl.NOPROGRESS, 1)			#屏蔽下载进度条
c.setopt(pycurl.FORBID_REUSE, 1)		#完成交互后强制断开,补重用
c.setopt(pycurl.MAXREDIRS, 1)			#指定HTTP重定向的最大数为1
c.setopt(pycurl.DNS_CACHE_TIMEOUT, 30)	#设置保存DNS信息时间为30秒

#最新pycurl输出的用法,需要将获得的字节储存在buffer中
c.setopt(pycurl.WRITEHEADER,buffer)					#将返回的HTTP HEADER定向到buffer最新pycurl输出的用法
c.setopt(pycurl.WRITEDATA, buffer)					#将返回的HTTP内容定向到buffer,最新pycurl输出的用法

try:
	c.perform()			#提交请求
except Exception as e:
	print("connection error"+str(e))
	indexfile.close()
	c.close()
	sys.exit()
NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME)				#获取DNS解析时间
CONNECTTIME = c.getinfo(c.CONNECT_TIME)						#获取建立连接时间
PRETRANSFER_TIME = c.getinfo(c.PRETRANSFER_TIME)			#获取从建立连接到准备传输所消耗的时间
STARTTRANSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME)		#获取从建立连接到传输开始所消耗的时间
TOTAL_TIME = c.getinfo(c.TOTAL_TIME)						#获取传输的总时间
HTTP_CODE = c.getinfo(c.HTTP_CODE)							#获取HTTP状态码
SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD)					#获取下载数据包大小
HEADER_SIZE = c.getinfo(c.HEADER_SIZE)						#获取HTTP头部大小
SPEED_DOWNLOAD = c.getinfo(c.SPEED_DOWNLOAD)				#获取平均下载速度

#打印输出相关数据
body = buffer.getvalue()
report = 'report.txt'								#将访问的URL的html文件写入到文件中
with open (report, 'wb' )as f:
	f.write(body)	
print("HTTP状态码{}".format(HTTP_CODE))
print("获取DNS解析时间%{:.2f} ms".format(NAMELOOKUP_TIME*1000))
print("建立连接时间{:.2f} ms".format(CONNECTTIME*1000))
print("准备传输时间{:.2f} ms".format(PRETRANSFER_TIME*1000))
print("传输开始时间{:.2f} ms".format(STARTTRANSFER_TIME*1000))
print("传输结束总时间{:.2f} ms".format(TOTAL_TIME*1000))
print("下载数据包大小{} byte".format(SIZE_DOWNLOAD))
print("HTTP头部大小{} byte".format(HEADER_SIZE))
print("平均下载速度:{} bytes/s".format(SPEED_DOWNLOAD))
c.close()

 

你可能感兴趣的:(Linux,python)