分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

怎样一键检测域名或url是否正常解析并传输

发布时间:2023-09-06 02:05责任编辑:林大明关键词:url
好久没有写博客了,现在重新拾起来,我想还不算晚。

工作中,经常会有人抱怨:网站好卡,dns是不是有问题...... 有没有一键的方式了解到是dns解析的问题还是网络传输导致的吗?

有。可以写一些脚本检查。shell可以充分利用curl工具编写脚本,python可以充分利用pycurl模块编写脚本。

#!/usr/bin/env python#coding: utf-8'''功能:检测域名解析及url响应时间用法:可以将相关域名或url写死,也可以修改脚本变成交互式,每次可以检测多个作者:任小为 e-mail: 1305627792@qq.com版本:v1.0时间:2018.07.19'''import sysimport osimport timeimport pycurl##urls = "https://www.baidu.com"urls = raw_input("Please input your urls: ")if len(urls) == 0:    print("You have no input any url...")    sys.exit(1)print("")for url in urls.split():    c = pycurl.Curl()    c.setopt(pycurl.URL, url)    c.setopt(pycurl.CONNECTTIMEOUT, 5)    c.setopt(pycurl.TIMEOUT, 5)    c.setopt(pycurl.FORBID_REUSE, 1)    c.setopt(pycurl.MAXREDIRS, 1)    c.setopt(pycurl.NOPROGRESS, 1)    c.setopt(pycurl.DNS_CACHE_TIMEOUT, 30)        indexfile = open(os.path.dirname(os.path.realpath(__file__)) + "/content.txt", "wb")    c.setopt(pycurl.WRITEHEADER, indexfile)    c.setopt(pycurl.WRITEDATA, indexfile)        try:        c.perform()    except Exception, e:        print("connection error: " + str(e))        indexfile.close()        c.close()        sys.exit()        NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME)    CONNECT_TIME = 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)    SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD)    HEADER_SIZE = c.getinfo(c.HEADER_SIZE)    SPEED_DOWNLOAD = c.getinfo(c.SPEED_DOWNLOAD)        print("-"*15 + url +"-"*15)    print("HTTP状态码:%s" % (HTTP_CODE))    print("DNS解析时间:%.2f ms" % (NAMELOOKUP_TIME * 1000))    print("建立连接时间:%.2f ms " % (CONNECT_TIME * 1000))    print("准备传输时间:%.2f ms " % (PRETRANSFER_TIME * 1000))    print("传输开始时间:%.2f ms " % (STARTTRANSFER_TIME * 1000))    print("传输结束时间:%.2f ms " % (TOTAL_TIME * 1000))    print("下载数据包大小:%d bytes/s " % (SIZE_DOWNLOAD))    print("HTTP头部大小:%d byte " % (HEADER_SIZE))    print("平均下载速度:%d bytes/s " % (SPEED_DOWNLOAD))    print("")indexfile.close()c.close()sys.exit()

上面我用python写的一键检测脚本,可将脚本命名为: mypycurl.py,执行方式:python mypycurl.py,检测项可以写1个或者多个。执行结果如下:

通过执行结果可以看到域名的解析时间、网络传输时间、下载速度等,这些结果都是充分利用pycurl模块分析得到。可以多执行几次检测,也可以对脚本j加一个for循环,每次循环检测10次,如果dns解析时间较长(比如每次都是100多ms),则说明dns有问题,接下来对症下药即可。


关于脚本中的模块、方法或者python语法,如果有不懂的地方可以自行百度,也可以给我留言,只要我看到了一定答疑解惑、共同进步!


怎样一键检测域名或url是否正常解析并传输

原文地址:http://blog.51cto.com/4593973/2147681

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved