情景:

公司某晚上cdn服务商的节点突然崩溃导致某些网页无法打开或打开缓慢,之前测试cdn节点状态基本采用更改host文件的逐个访问的方式,费时费力,便想通过脚本来完成这项cdn节点状态测试。主要采用了xlrd(读表格数据)、httplib(绑定cdn节点进行访问及状态获取)、xlsxwriter(写测试结果)。脚本从制定格式的表格(data.xlsx)中读取数据并输出到另一张表格(result.xlsx)

脚本写的比较随意,各种不规范,后续会进行跟进,附代码:

1 # -*- coding: utf-8 -*-
 2 import xlrd
 3 import httplib
 4 import hashlib
 5 import xlsxwriter
 6 
 7 def cdntest(ip,url,dn,result,ro):
 8     try:
 9         conn=httplib.HTTPConnection(ip)  #IP地址
10         conn.request(method="GET",    #以GET的方式发送请求www.ci123.com
11                      url=url,            #请求的web路径
12                      headers={'Host':dn,  #请求头里面的主机名,
13                     "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, lik    e Gecko) Chrome/33.0.1750.152 Safari/537.36",#模拟浏览器
14                     "Referer":"im is test"})   #请求来源
15         response=conn.getresponse()  #获取CDN的回应内容信息
16         print i                    #输出IP
17         print response.status      #输出http状态码
18         print response.getheaders()  #打印回应头信息,以列表嵌元组的方式表示
19         print hashlib.md5(response.read()).hexdigest()   #读取回应的内容信息,再计算出MD5值
20         conn.close()  #链接关闭
21         result.write(ro, 3, response.status)
22     except:
23         print " ===================================="
24         print "||      "+ip+"   error       ||"
25         print " ===================================="
26         result.write(ro, 3, "error")
27 
28 resultbook=xlsxwriter.Workbook('result.xlsx')
29 result=resultbook.add_worksheet()
30 result.write('A1',u'域名')
31 result.write('B1',u'路径')
32 result.write('C1',u'IP')
33 result.write('D1',u'状态')
34 
35 data=xlrd.open_workbook('data.xlsx')
36 table = data.sheets()[0]
37 nrows = table.nrows #行数
38 ncols = table.ncols #列数
39 colnames =  table.row_values(0) #某一行数据
40 list =[]
41 for rownum in range(1,nrows):
42     row = table.row_values(rownum)
43     if row:
44         app = {}
45         for i in range(len(colnames)):
46             app[colnames[i]] = row[i]
47         list.append(app)
48 
49 ro=1
50 for row in list:
51     url=row['URL path']
52     #print url
53     ip=row['CDN IP']
54     #print ip
55     dn=row['Domain Name']
56     #print dn
57     result.write(ro, 0, dn)
58     result.write(ro, 1, ip)
59     result.write(ro, 2, url)
60     cdntest(ip,url,dn,result,ro)
61     ro=ro+1
62 resultbook.close()
63 print "done"

 

说明:

输入表格格式(部分):data.xlsx:

python cdn python cdn脚本_Domain

                               Domain Name为公司顶级域名,CDN IP为cdn节点IP,URL path为网页路径。

                              将数据按格式存入表格中放在工程目录下,名称为data.xlsx

运行结果(部分):

命令行输出:

python cdn python cdn脚本_数据_02

测试记过自动输出到表格中(result.xlsx):

python cdn python cdn脚本_IP_03