情景:
公司某晚上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):