Advertisement
Guest User

Untitled

a guest
Jul 13th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.53 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)) > 72:
  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.     def sql_log(self):
  65.         from pymysql import connect, err, sys, cursors
  66.         szint = self.warning()
  67.         datum = str(datetime.datetime.now()).split(".")[0].replace(":","-")
  68.         conn = connect( host = 'localhost',
  69.                                 port = 3306,
  70.                                 user = 'root',
  71.                                 passwd = pw.rootpw,
  72.                                 db = 'Emma' );
  73.         cursor = conn.cursor( cursors.DictCursor )
  74.         #CREATE TABLE IF NOT EXISTS
  75.         cursor.execute( "INSERT INTO `Processzor_Homerseklet` "\
  76.         "( `Processzor`, `Mag1` , `Mag2` , `Mag3` , `Mag4` , `Mag5` , `Mag6` ," \
  77.         " MemTotal,MemUsage,`datum` , `szint`) VALUES( '%s', '%s' , '%s', '%s', '%s' , '%s', '%s', '%s' , '%s','%s' , '%s' ) " %\
  78.         (self.mag0,self.mag1,self.mag2,self.mag3,self.mag4,self.mag5,self.mag6,self.total,self.usagee,datum,szint))
  79.         conn.commit()
  80.         conn.close()
  81.         return "SQL LOG Letrehozva."
  82.        
  83.     def __str__(self):
  84.         Text = "LOG:\n" +\
  85.                     "Processzor homerseklete : %s celsius fok\n" % (self.physical)+\
  86.                     "Mag1 = %s celsius fok\n" % (self.mag1) +\
  87.                     "Mag2 = %s celsius fok\n" % (self.mag2)+\
  88.                     "Mag3 = %s celsius fok\n" % (self.mag3)+\
  89.                     "Mag4 = %s celsius fok\n" % (self.mag4)+\
  90.                     "Mag5 = %s celsius fok\n" % (self.mag5)+\
  91.                     "Mag6 = %s celsius fok\n" % (self.mag6)
  92.         if self.warning() == 2:
  93.             Text = "|Emma automatikusan kikapcsolt!|\n" + Text
  94.             return Text
  95.         else:
  96.             return Text
  97.        
  98.                
  99.     def send_mail(self,warninglevel):
  100.         #########################
  101.         try:
  102.             from email.mime.multipart import MIMEMultipart
  103.             from email.mime.text import MIMEText
  104.             import smtplib
  105.             me = "dezsobence98@gmail.com"
  106.             you = "dj@onlygame.hu"
  107.  
  108.             msg = MIMEMultipart('alternative')
  109.             msg['Subject'] = "Processzor homerseklet (60 fok ^ ) | Warning!"
  110.             msg['From'] = me
  111.             msg['To'] = you
  112.  
  113.             process_list = "<br />".join(os.popen("ps aux | less").read().splitlines())
  114.             os.popen("echo q | htop | aha --black --line-fix > htop.html")
  115.             time.sleep(5)
  116.             memm = "Memória használat: "+self.total+"/"+self.usagee
  117.             self.mitortent.append(memm)
  118.             f = "<b>"+"".join(open("htop.html","r").read().splitlines())+"</b>"
  119.             text = "<br />".join(self.mitortent)+"<br /> <br /> <br /> <i>***ps aux | less***</i> <br /> <br />"+process_list
  120.             if warninglevel == 2:
  121.                 text = "<b>A processzor 70 fok fölé emelkedett, Emma kikapcsolt.</b> <br />"+text
  122.                 msg['Subject'] = "### Emma kikapcsolt (70 fok ^) | Warning! ###"
  123.             else:
  124.                 text = "<b>A processzor 60 fok fölé emelkedett</b> <br />"+text
  125.             html = text+f
  126.             #part1 = MIMEText(text, 'plain')
  127.             part2 = MIMEText(html, 'html')
  128.  
  129.             #msg.attach(part1)
  130.             msg.attach(part2)
  131.  
  132.             username = 'dezsobence98@gmail.com'
  133.             password = pw.mailpw
  134.             server = smtplib.SMTP('smtp.gmail.com:587')
  135.             server.starttls()
  136.             server.login(username,password)
  137.             server.sendmail(me, you, msg.as_string())
  138.             server.quit()
  139.             print("Mail elkuldve!")
  140.         except Exception as err:
  141.             print(err)
  142.            
  143.         #########################
  144.         """
  145.        process_list = "\n".join(os.popen("ps aux | less").read().splitlines())
  146.        try:
  147.            SUBJECT,TEXT = "",""
  148.            fromaddr = 'dezsobence98@gmail.com'
  149.            toaddrs  = 'dj@onlygame.hu'
  150.            if warninglevel == 2:
  151.                SUBJECT = "Emma kikapcsolva ||| Processzor tulmelegedett"
  152.                TEXT = "Emma tulmelegedett, automatikusan kikapcsolva.\n\n"+\
  153.                "\n".join(self.mitortent)+"\n***ps aux | less***\n"+process_list
  154.            else:
  155.                SUBJECT = "Processzor tulmelegedett! |Figyelmeztetes|"
  156.                TEXT = "\n".join(self.mitortent)+"\n\n***ps aux | less***\n"+process_list
  157.            msg = 'Subject: %s\n\n%s' % (SUBJECT, TEXT)
  158.            username = 'dezsobence98@gmail.com'
  159.            password = pw.mailpw
  160.            server = smtplib.SMTP('smtp.gmail.com:587')
  161.            server.starttls()
  162.            server.login(username,password)
  163.            server.sendmail(fromaddr, toaddrs, msg)
  164.            server.quit()
  165.            print("Sikeres mail kuldes")
  166.        except Exception as err:
  167.            print(err)
  168.        """
  169.     def shutdownEmma(self):
  170.         print("A szerver 1 perc múlva leáll.")
  171.         print("Túl nagy a terhelés.")
  172.         time.sleep(65)
  173.         os.popen("echo %s | sudo -S shutdown" % (rootpw))
  174.            
  175. if __name__ == "__main__":
  176.     temp = os.popen('sensors').read().splitlines()
  177.     sensor = homerseklet_check(temp)
  178.     warninglevel = sensor.warning()
  179.     sensor.usage_()
  180.     if warninglevel != 0:
  181.         sensor.send_mail(warninglevel)
  182.     #sensor.log()
  183.     sensor.sql_log()
  184.     print(str(sensor))
  185.     if warninglevel == 2:
  186.         sensor.shutdownEmma()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement