python監控CPU/內存/磁盤,超過指定百分比,發送郵件

#!/usr/bin/python
#coding:utf-8

#導入psutil模塊
import psutil
import yagmail

def mail(subject,contents):      #形參爲郵件的標題和內容
    yag = yagmail.SMTP(user='zhangweihappy8@163.com', password='xxx', host='smtp.163.com')  #passwd爲受權的密碼不是登錄密碼
    #發送郵件
    yag.send(to='zui_city_zhang@163.com',subject=subject, contents=contents)
    #斷開鏈接
    yag.close()
  


def cpu_info():
    cpu = psutil.cpu_percent(1)
    return cpu
res=cpu_info()

def mem_info():
    mem = psutil.virtual_memory()
    info1={'mem_total':mem[0],'mem_free':mem[1],'mem_percent':mem[2],'mem_used':mem[3]}
    return info1
res2=mem_info()

def disk_info():
    disk = psutil.disk_usage('/')
    info2 = {'total': disk[0], 'used': disk[1], 'free': disk[2], 'percent': disk[3]}   #一樣寫入一個字典
    return info2
res3=disk_info()

def main():
    m_cpu = res
    m_mem = res2
    m_disk = res3    #將各個分函數的調用結果看成函數體輸入
    msg='''          
    cpu使用率%s
    內存總量%sM      
    內存剩餘%sM
    內存使用率%s
    內存使用量%sM
    磁盤總量%sGB
    磁盤使用量%sGB
    磁盤剩餘量%sGB
    磁盤使用率%s%%
    '''%(m_cpu,int(m_mem.get('mem_total')/1024/1024),int(m_mem['mem_free']/1024/1024),m_mem['mem_percent'],int(m_mem['mem_used']/1024/1024),int(m_disk['total']/1024/1024/1024),int(m_disk['used']/1024/1024/1024),int(m_disk['free']/1024/1024/1024),m_disk['percent']) 
    print(msg)
    if m_cpu >50:
        mail('cpu報警',msg)
    else:
        print('cpu正常')
    if m_mem['mem_percent'] > 50:
        mail('內存佔用過半',msg)
    else:
        print('relax')
    if m_disk['percent'] > 50:
        mail('磁盤快炸了',msg)
    else:
        print('磁盤正常')

if __name__=='__main__':
    main()
相關文章
相關標籤/搜索