情景:
公司某晚上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:
Domain Name为公司顶级域名,CDN IP为cdn节点IP,URL path为网页路径。
将数据按格式存入表格中放在工程目录下,名称为data.xlsx
运行结果(部分):
命令行输出:
测试记过自动输出到表格中(result.xlsx):