Advertisement
Guest User

Untitled

a guest
Jul 13th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.09 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.            
  26.     def warning(self):
  27.         mitortent = list()
  28.         riasztas = 0
  29.         for i in range(0,7):
  30.             if eval("int(self.mag%d)" % (i)) > 60:
  31.                 if riasztas != 2:riasztas = 1
  32.             elif eval("int(self.mag%d)" % (i)) > 70:
  33.                 riasztas = 2
  34.             self.mitortent.append("Processzor (mag%d) tulmelegedett %s fokra" % (i,eval("self.mag%d" % (i))))
  35.         return riasztas
  36.                
  37.     def log(self):
  38.         directory = str(datetime.datetime.now()).split()[0]
  39.         if not os.path.exists("proclogs/"+directory):
  40.             os.makedirs("proclogs/"+directory)
  41.         ido = str(datetime.datetime.now()).split(".")[0].replace(":","-")
  42.         with open("proclogs/"+directory+"/"+ido+".processor_log","w") as f:
  43.             print(self.__str__(),file = f)
  44.            
  45.     def sql_log(self):
  46.         from pymysql import connect, err, sys, cursors
  47.         szint = self.warning()
  48.         datum = str(datetime.datetime.now()).split(".")[0].replace(":","-")
  49.         conn = connect( host = 'localhost',
  50.                                 port = 3306,
  51.                                 user = 'root',
  52.                                 passwd = pw.rootpw,
  53.                                 db = 'Emma' );
  54.         cursor = conn.cursor( cursors.DictCursor )
  55.         #CREATE TABLE IF NOT EXISTS
  56.         cursor.execute( "INSERT INTO `Processzor_Homerseklet` "\
  57.         "( `Processzor`, `Mag1` , `Mag2` , `Mag3` , `Mag4` , `Mag5` , `Mag6` ," \
  58.         " `datum` , `szint`) VALUES( '%s', '%s' , '%s', '%s', '%s' , '%s', '%s', '%s' , '%s' ) " %\
  59.         (self.mag0,self.mag1,self.mag2,self.mag3,self.mag4,self.mag5,self.mag6,datum,szint))
  60.         conn.commit()
  61.         conn.close()
  62.         return "SQL LOG Letrehozva."
  63.        
  64.     def __str__(self):
  65.         Text = "LOG:\n" +\
  66.                     "Processzor homerseklete : %s celsius fok\n" % (self.physical)+\
  67.                     "Mag1 = %s celsius fok\n" % (self.mag1) +\
  68.                     "Mag2 = %s celsius fok\n" % (self.mag2)+\
  69.                     "Mag3 = %s celsius fok\n" % (self.mag3)+\
  70.                     "Mag4 = %s celsius fok\n" % (self.mag4)+\
  71.                     "Mag5 = %s celsius fok\n" % (self.mag5)+\
  72.                     "Mag6 = %s celsius fok\n" % (self.mag6)
  73.         if self.warning() == 2:
  74.             Text = "|Emma automatikusan kikapcsolt!|\n" + Text
  75.             return Text
  76.         else:
  77.             return Text
  78.        
  79.                
  80.     def send_mail(self,warninglevel):
  81.         import smtplib
  82.         try:
  83.             SUBJECT,TEXT = "",""
  84.             fromaddr = 'dezsobence98@gmail.com'
  85.             toaddrs  = 'dj@onlygame.hu'
  86.             if warninglevel == 2:
  87.                 SUBJECT = "Emma kikapcsolva ||| Processzor tulmelegedett"
  88.                 TEXT = "Emma tulmelegedett, automatikusan kikapcsolva.\n\n"+\
  89.                 "\n".join(self.mitortent)+"\n"+str("\n".join(os.popen("top -n 1").read().splitlines()))
  90.             else:
  91.                 SUBJECT = "Processzor tulmelegedett! |Figyelmeztetes|"
  92.                 TEXT = "\n".join(self.mitortent)+"\n"+\
  93.                 str("\n".join(os.popen("top -n 1").read().splitlines()))
  94.             msg = 'Subject: %s\n\n%s' % (SUBJECT, TEXT)
  95.             username = 'dezsobence98@gmail.com'
  96.             password = pw.mailpw
  97.             server = smtplib.SMTP('smtp.gmail.com:587')
  98.             server.starttls()
  99.             server.login(username,password)
  100.             server.sendmail(fromaddr, toaddrs, msg)
  101.             server.quit()
  102.             print("Sikeres mail kuldes")
  103.         except Exception as err:
  104.             print(err)
  105.     def shutdownEmma(self):
  106.         print("A szerver 1 perc múlva leáll.")
  107.         print("Túl nagy a terhelés.")
  108.         time.sleep(65)
  109.         os.popen("echo %s | sudo -S shutdown" % (rootpw))
  110.            
  111. if __name__ == "__main__":
  112.     temp = os.popen('sensors').read().splitlines()
  113.     sensor = homerseklet_check(temp)
  114.     warninglevel = sensor.warning()
  115.     if warninglevel != 0:
  116.         sensor.send_mail(warninglevel)
  117.     #sensor.log()
  118.     sensor.sql_log()
  119.     print(str(sensor))
  120.     if warninglevel == 2:
  121.         sensor.shutdownEmma()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement