標籤:ges 列印 ror response read 狀態 code 元組 alt
情景:
公司某晚上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.com11 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 #輸出IP17 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=150 for row in list:51 url=row[‘URL path‘]52 #print url53 ip=row[‘CDN IP‘]54 #print ip55 dn=row[‘Domain Name‘]56 #print dn57 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+162 resultbook.close()63 print "done"
說明:
輸入表格格式(部分):data.xlsx:
Domain Name為公司頂級網域名稱,CDN IP為cdn節點IP,URL path為網頁路徑。
將資料按格式存入表格中放在工程目錄下,名稱為data.xlsx
運行結果(部分):
命令列輸出:
測試記過自動輸出到表格中(result.xlsx):
Python指令碼測試cdn節點狀態