1. 程式人生 > >python系統監控及郵件傳送

python系統監控及郵件傳送

                                  python系統監控及郵件傳送

  #psutil模組是一個跨平臺庫,能輕鬆實現獲取系統執行的程序和系統利用率   import psutil                                    #先匯入psutil模組  res = psutil.cpu_percent(1)              #1s內cpu的使用率  print(res)  
 res1 = psutil.cpu_percent(1,True)    #每一秒cpu的佔用率  print(res1)    res2 = psutil.virtual_memory()          #記憶體使用率  print(res2)  print( '%.2f%%' %res2[2])              #以百分比形式列印第三位  
 res4 = psutil.disk_usage('C:')            #硬碟分割槽的使用率  print(res4)    res5 = psutil.net_io_counters()       #檢視網路流量  print(res5)  

監控程式

#匯入模組(獲取系統資訊和郵件模組) import psutil         import smtplib from email.mime.text import MIMEText from email.header import Header  

#cpu模組

def cpu_info():     cpu = '%.2f%%' %psutil.cpu_percent(1)    #把cpu的值改成百分比的形式     return cpu   #記憶體模組 def mem_info():     mem = psutil.virtual_memory()     mem_per = '%.2f%%' %mem[2]                 #同上     mem_total = str(int(mem[0]/1024/1024)) + 'M'        mem_used = str(int(mem[3]/1024/1024)) + 'M'     info = {         'mem_per' : mem_per,         'mem_total' : mem_total,         'mem_used' : mem_used     }     return info  

#磁碟分割槽模組

def disk_info():     c_per = '%.2f%%' %psutil.disk_usage('C:')[3]     d_per = '%.2f%%' %psutil.disk_usage('D:')[3]     info = {         'c_per' : c_per,         'd_per' : d_per     }     return info  

#網絡卡模組

def network_info():     network = psutil.net_io_counters()     network_sent = str(int(network[0]/8/1024)) + 'kb'     network_recv = str(int(network[1]/8/1024)) + 'kb'     info = {         'network_sent' : network_sent,         'network_recv' : network_recv     }     return info  

#郵件傳送模組

def send_mail(message):     sender = ' [email protected]'    #傳送的郵箱賬號     receiver = [' [email protected]']           #接收的郵箱賬號     subject = '報警'                                       #主題     username = ' [email protected]'   #傳送的郵箱賬號     password = 'password'                              #傳送的郵箱密碼     msg = MIMEText(message, 'plain', 'utf-8')    #(郵件正文,編碼,編碼)     msg['Subject'] = Header(subject, 'utf-8')          #擡頭為subject     msg['From'] = 'TOP< [email protected]>'  #TOP標題 後面是郵箱     msg['To'] = "' [email protected]'"                        #接收的郵箱     smtp = smtplib.SMTP()     smtp.connect(' smtp.163.com')                              #郵箱伺服器     smtp.login(username, password)     smtp.sendmail(sender, receiver, msg.as_string())     smtp.quit()  

#主函式

def main():     cpu = cpu_info()     mem = mem_info()     disk = disk_info()     network = network_info()     msg = '''     cpu使用率:%s     ==================     記憶體佔用率:%s     記憶體總量:%s     記憶體使用量:%s     ===================     C盤使用率:%s     D盤使用率:%s     ====================     網絡卡傳送量:%s     網絡卡接收量:%s     '''  % (cpu, mem.get('mem_per'), mem.get('mem_total'), mem.get('mem_used'), disk.get('c_per'), disk.get('d_per'), network.get('network_sent'), network.get('network_recv'))     if int(cpu[:2]) > 80 or int(mem.get('mem_per')[:2]) > 80:   #報警傳送條件         send_mail(msg)     else :         print('沒到閾值。') if __name__ == '__main__':     main()