天天看點

2、python自動化運維——業務監控詳解

發送電子郵件子產品(smtplib)

大概思路:執行個體化smtp對象,連接配接smtp伺服器以及開放的端口,調用starttls()方法建立安全連結,登入賬戶和授權碼,發送郵件,最後退出

腳本示例:

#!/usr/bin/python

import smtplib

import string

host="smtp.qq.com"

subject="test email from python"

to="[email protected]"

send="[email protected]"

text='python rules them all!'

body = "\r\n".join((

      "from:   %s" % send,

      "to:   %s" % to,

      "subject:   %s" % subject,

      "",

      text

      ))

server=smtplib.smtp()

server.connect(host,"587")

server.starttls()

server.login("[email protected]","lgjahba")

server.sendmail(send,to,body)

server.quit()

探測web服務品質(pycurl)

思路:導入pycurl子產品,執行個體化curl對象,設定測試屬性,擷取測試結果

import pycurl

import time

import sys

import os,sys

url=input("enter the url you want to query:\n   ")

c=pycurl.curl()

c.setopt(pycurl.url,url)

c.setopt(pycurl.connecttimeout,5) #定義請求連接配接數

c.setopt(pycurl.noprogress,1) #屏蔽下載下傳進度條

c.setopt(pycurl.forbid_reuse,1)#完成互動後強制斷開連接配接,不重用

c.setopt(pycurl.maxredirs,1) #指定http重定向的最大數為1

c.setopt(pycurl.dns_cache_timeout,30) #設定儲存dns資訊的時間為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 as e:

      print("connection   error:",str(e))

      indexfile.close()

      c.close()

      sys.exit()

dns_time=c.getinfo(c.namelookup_time) #擷取dns計息時間

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) #擷取http狀态碼

size_downland=c.getinfo(c.size_download) #擷取下載下傳包大小

head_size=c.getinfo(c.header_size) #擷取http頭部大小

speed_downland=c.getinfo(c.speed_download) # 擷取平均下載下傳速度

print("http狀态碼:%s" % (http_code) )

print("dns解析時間:%.2f" % (dns_time))

print("建立連接配接時間:%.2f" % (connect_time))

print("準備傳輸時間:%.2f:" % (pretransfer_time))

print("傳輸開始時間:%.2f:" % (starttransfer_time))

print("傳輸結束總時間:%.2f" % (total_time))

print("下載下傳資料包大小:%d byte" % size_downland)

print("http頭部大小:%d byte" % head_size)

print("平均下載下傳速度:%d bytes/s" % speed_downland)

indexfile.close()

c.close()