Advertisement
Guest User

Untitled

a guest
Jul 13th, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.60 KB | None | 0 0
  1. import math
  2. import sys
  3. import random
  4. import os
  5. import datetime
  6. import time
  7. sys.path.insert(0, 'conn')
  8. import pw
  9.  
  10. ########################################################################################
  11. #                                                                                      #
  12. # Author Bence Dezso | CPU Temp Checker | Auto mail send when warning | Auto shutdown  #
  13. #                                                                                      #
  14. ########################################################################################
  15.  
  16.  
  17. class homerseklet_check():
  18.     def __init__(self,homerseklet):
  19.         self.physical = homerseklet[2].split()[3].split(".")[0].replace("+","")
  20.         for i,k in enumerate(homerseklet[3:9],1):
  21.             fok = k.rstrip().lstrip().split()[2].split(".")[0].replace("+","")
  22.             exec('self.mag%d = %s' % (i,fok))
  23.         self.mag0 = self.physical
  24.         self.mitortent = list()
  25.         self.total = 0
  26.         self.usagee = 0
  27.            
  28.     def warning(self):
  29.         mitortent = list()
  30.         riasztas = 0
  31.         for i in range(0,7):
  32.             if eval("int(self.mag%d)" % (i)) > 60:
  33.                 if riasztas != 2:riasztas = 1
  34.             elif eval("int(self.mag%d)" % (i)) > 70:
  35.                 riasztas = 2
  36.             self.mitortent.append("Processzor (mag%d) %s fok" % (i,eval("self.mag%d" % (i))))
  37.         return riasztas
  38.                
  39.     def log(self):
  40.         directory = str(datetime.datetime.now()).split()[0]
  41.         if not os.path.exists("proclogs/"+directory):
  42.             os.makedirs("proclogs/"+directory)
  43.         ido = str(datetime.datetime.now()).split(".")[0].replace(":","-")
  44.         with open("proclogs/"+directory+"/"+ido+".processor_log","w") as f:
  45.             print(self.__str__(),file = f)
  46.    
  47.     def darabol(self,mit):
  48.         darabok = list()
  49.         text = ""
  50.         for i in mit:
  51.             if i != " ":
  52.                 text += i
  53.             elif len(text) > 0:
  54.                 darabok.append(text)
  55.                 text = ""
  56.         return darabok
  57.            
  58.     def usage_(self):
  59.         info = os.popen("free -m").read().splitlines()
  60.         a = self.darabol(info[1])
  61.         self.total = a[1]
  62.         self.usagee = a[2]
  63.        
  64.        
  65.        
  66.            
  67.     def sql_log(self):
  68.         from pymysql import connect, err, sys, cursors
  69.         szint = self.warning()
  70.         datum = str(datetime.datetime.now()).split(".")[0].replace(":","-")
  71.         conn = connect( host = 'localhost',
  72.                                 port = 3306,
  73.                                 user = 'root',
  74.                                 passwd = pw.rootpw,
  75.                                 db = 'Emma' );
  76.         cursor = conn.cursor( cursors.DictCursor )
  77.         #CREATE TABLE IF NOT EXISTS
  78.         cursor.execute( "INSERT INTO `Processzor_Homerseklet` "\
  79.         "( `Processzor`, `Mag1` , `Mag2` , `Mag3` , `Mag4` , `Mag5` , `Mag6` ," \
  80.         " MemTotal,MemUsage,`datum` , `szint`) VALUES( '%s', '%s' , '%s', '%s', '%s' , '%s', '%s', '%s' , '%s','%s' , '%s' ) " %\
  81.         (self.mag0,self.mag1,self.mag2,self.mag3,self.mag4,self.mag5,self.mag6,self.total,self.usagee,datum,szint))
  82.         conn.commit()
  83.         conn.close()
  84.         return "SQL LOG Letrehozva."
  85.        
  86.     def __str__(self):
  87.         Text = "LOG:\n" +\
  88.                     "Processzor homerseklete : %s celsius fok\n" % (self.physical)+\
  89.                     "Mag1 = %s celsius fok\n" % (self.mag1) +\
  90.                     "Mag2 = %s celsius fok\n" % (self.mag2)+\
  91.                     "Mag3 = %s celsius fok\n" % (self.mag3)+\
  92.                     "Mag4 = %s celsius fok\n" % (self.mag4)+\
  93.                     "Mag5 = %s celsius fok\n" % (self.mag5)+\
  94.                     "Mag6 = %s celsius fok\n" % (self.mag6)
  95.         if self.warning() == 2:
  96.             Text = "|Emma automatikusan kikapcsolt!|\n" + Text
  97.             return Text
  98.         else:
  99.             return Text
  100.        
  101.                
  102.     def send_mail(self,warninglevel):
  103.         import smtplib
  104.         try:
  105.             SUBJECT,TEXT = "",""
  106.             fromaddr = 'dezsobence98@gmail.com'
  107.             toaddrs  = 'dj@onlygame.hu'
  108.             if warninglevel == 2:
  109.                 SUBJECT = "Emma kikapcsolva ||| Processzor tulmelegedett"
  110.                 TEXT = "Emma tulmelegedett, automatikusan kikapcsolva.\n\n"+\
  111.                 "\n".join(self.mitortent)+"\n"+str("\n".join(os.popen("top -n 1").read().splitlines()))
  112.             else:
  113.                 SUBJECT = "Processzor tulmelegedett! |Figyelmeztetes|"
  114.                 TEXT = "\n".join(self.mitortent)
  115.             msg = 'Subject: %s\n\n%s' % (SUBJECT, TEXT)
  116.             username = 'dezsobence98@gmail.com'
  117.             password = pw.mailpw
  118.             server = smtplib.SMTP('smtp.gmail.com:587')
  119.             server.starttls()
  120.             server.login(username,password)
  121.             server.sendmail(fromaddr, toaddrs, msg)
  122.             server.quit()
  123.             print("Sikeres mail kuldes")
  124.         except Exception as err:
  125.             print(err)
  126.     def shutdownEmma(self):
  127.         print("A szerver 1 perc múlva leáll.")
  128.         print("Túl nagy a terhelés.")
  129.         time.sleep(65)
  130.         os.popen("echo %s | sudo -S shutdown" % (rootpw))
  131.            
  132. if __name__ == "__main__":
  133.     temp = os.popen('sensors').read().splitlines()
  134.     sensor = homerseklet_check(temp)
  135.     warninglevel = sensor.warning()
  136.     sensor.usage_()
  137.     if warninglevel != 0:
  138.         sensor.send_mail(warninglevel)
  139.     #sensor.log()
  140.     sensor.sql_log()
  141.     print(str(sensor))
  142.     if warninglevel == 2:
  143.         sensor.shutdownEmma()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement