標籤:linux windows python 自動化營運
#coding:utf8
from email.mime.text import MIMEText
import smtplib,psutil,time,os,datetime
destination = ["[email protected]"] #定義郵件接收者
source = "[email protected]" #定義郵件寄件者
mail_server = ‘smtp.qq.com‘
username = ‘775465751‘
password = ‘wrromyiywqijbdia‘
def send_mail(des,title,content):
csj = MIMEText(content)
csj[‘Subject‘] = title
csj[‘From‘] = source
csj[‘To‘] = ‘;‘.join(destination)
try:
a = smtplib.SMTP_SSL(mail_server,465)
a.connect(mail_server)
a.login(username,password)
a.sendmail(source,destination,csj.as_string())
a.close()
return True
except Exception,e:
print e
return False
def hostname():
com = ‘hostname‘
res = os.popen(com)
content = res.read()
return content
def mem_use():
total_mem = psutil.virtual_memory().total
free_mem = psutil.virtual_memory().available
res = (psutil.virtual_memory().available/float(psutil.virtual_memory().total))*100
return res
def system(a,b):
cpu_info = []
mem_info = []
now_time = "Date %s"%datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d")
count = 1
print "Start monitoring "
while True:
time.sleep(60) #定義採集系統資訊的頻率,單位為秒
if count <= 10: #定義每採集十次系統資訊後輸出平均值
cpu_info.append(psutil.cpu_percent())
mem_info.append(mem_use())
count += 1
else:
cpu_info.pop(0)
mem_info.pop(0)
cpu_info.append(psutil.cpu_percent())
mem_info.append(mem_use())
cpu_avg = sum(cpu_info)/10
mem_avg = sum(mem_info)/10
if (cpu_avg >= a) or (mem_avg >= b):
print("---------------------------------------------------------")
print now_time
warning_cpu = ("Warning CPU Used:%.2f%%")%cpu_avg
warning_mem = ("Warning CPU Used:%.2f%%")%mem_avg
print warning_cpu
print warning_mem
send_mail(destination,"Warning Server Overload",hostname()) #發送郵件,格式為:(目的,標題,本文)
else:
print now_time
print("---------------------------------------------------------")
print("Info,CPU Used:%.2f%%")%cpu_avg
print("Info,Memory Used:%.2f%%")%mem_avg
system(0,0) #這兩個0代表設定cpu和記憶體的閾值,前者為CPU,後者為記憶體
本文出自 “工作家” 部落格,請務必保留此出處http://scorp.blog.51cto.com/11208059/1909174
用python做一個系統監控程式