Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import sys
- import random
- import os
- import datetime
- import time
- sys.path.insert(0, 'conn')
- import pw
- ########################################################################################
- # #
- # Author Bence Dezso | CPU Temp Checker | Auto mail send when warning | Auto shutdown #
- # #
- ########################################################################################
- class homerseklet_check():
- def __init__(self,homerseklet):
- self.physical = homerseklet[2].split()[3].split(".")[0].replace("+","")
- for i,k in enumerate(homerseklet[3:9],1):
- fok = k.rstrip().lstrip().split()[2].split(".")[0].replace("+","")
- exec('self.mag%d = %s' % (i,fok))
- self.mag0 = self.physical
- self.mitortent = list()
- self.total = 0
- self.usagee = 0
- def warning(self):
- mitortent = list()
- riasztas = 0
- for i in range(0,7):
- if eval("int(self.mag%d)" % (i)) > 60:
- if riasztas != 2:riasztas = 1
- elif eval("int(self.mag%d)" % (i)) > 72:
- riasztas = 2
- self.mitortent.append("Processzor (mag%d) %s fok" % (i,eval("self.mag%d" % (i))))
- return riasztas
- def log(self):
- directory = str(datetime.datetime.now()).split()[0]
- if not os.path.exists("proclogs/"+directory):
- os.makedirs("proclogs/"+directory)
- ido = str(datetime.datetime.now()).split(".")[0].replace(":","-")
- with open("proclogs/"+directory+"/"+ido+".processor_log","w") as f:
- print(self.__str__(),file = f)
- def darabol(self,mit):
- darabok = list()
- text = ""
- for i in mit:
- if i != " ":
- text += i
- elif len(text) > 0:
- darabok.append(text)
- text = ""
- return darabok
- def usage_(self):
- info = os.popen("free -m").read().splitlines()
- a = self.darabol(info[1])
- self.total = a[1]
- self.usagee = a[2]
- def sql_log(self):
- from pymysql import connect, err, sys, cursors
- szint = self.warning()
- datum = str(datetime.datetime.now()).split(".")[0].replace(":","-")
- conn = connect( host = 'localhost',
- port = 3306,
- user = 'root',
- passwd = pw.rootpw,
- db = 'Emma' );
- cursor = conn.cursor( cursors.DictCursor )
- #CREATE TABLE IF NOT EXISTS
- cursor.execute( "INSERT INTO `Processzor_Homerseklet` "\
- "( `Processzor`, `Mag1` , `Mag2` , `Mag3` , `Mag4` , `Mag5` , `Mag6` ," \
- " MemTotal,MemUsage,`datum` , `szint`) VALUES( '%s', '%s' , '%s', '%s', '%s' , '%s', '%s', '%s' , '%s','%s' , '%s' ) " %\
- (self.mag0,self.mag1,self.mag2,self.mag3,self.mag4,self.mag5,self.mag6,self.total,self.usagee,datum,szint))
- conn.commit()
- conn.close()
- return "SQL LOG Letrehozva."
- def __str__(self):
- Text = "LOG:\n" +\
- "Processzor homerseklete : %s celsius fok\n" % (self.physical)+\
- "Mag1 = %s celsius fok\n" % (self.mag1) +\
- "Mag2 = %s celsius fok\n" % (self.mag2)+\
- "Mag3 = %s celsius fok\n" % (self.mag3)+\
- "Mag4 = %s celsius fok\n" % (self.mag4)+\
- "Mag5 = %s celsius fok\n" % (self.mag5)+\
- "Mag6 = %s celsius fok\n" % (self.mag6)
- if self.warning() == 2:
- Text = "|Emma automatikusan kikapcsolt!|\n" + Text
- return Text
- else:
- return Text
- def send_mail(self,warninglevel):
- #########################
- try:
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- import smtplib
- me = "dezsobence98@gmail.com"
- you = "dj@onlygame.hu"
- msg = MIMEMultipart('alternative')
- msg['Subject'] = "Processzor homerseklet (60 fok ^ ) | Warning!"
- msg['From'] = me
- msg['To'] = you
- process_list = "<br />".join(os.popen("ps aux | less").read().splitlines())
- os.popen("echo q | htop | aha --black --line-fix > htop.html")
- time.sleep(5)
- memm = "Memória használat: "+self.total+"/"+self.usagee
- self.mitortent.append(memm)
- f = "<b>"+"".join(open("htop.html","r").read().splitlines())+"</b>"
- text = "<br />".join(self.mitortent)+"<br /> <br /> <br /> <i>***ps aux | less***</i> <br /> <br />"+process_list
- if warninglevel == 2:
- text = "<b>A processzor 70 fok fölé emelkedett, Emma kikapcsolt.</b> <br />"+text
- msg['Subject'] = "### Emma kikapcsolt (70 fok ^) | Warning! ###"
- else:
- text = "<b>A processzor 60 fok fölé emelkedett</b> <br />"+text
- html = text+f
- #part1 = MIMEText(text, 'plain')
- part2 = MIMEText(html, 'html')
- #msg.attach(part1)
- msg.attach(part2)
- username = 'dezsobence98@gmail.com'
- password = pw.mailpw
- server = smtplib.SMTP('smtp.gmail.com:587')
- server.starttls()
- server.login(username,password)
- server.sendmail(me, you, msg.as_string())
- server.quit()
- print("Mail elkuldve!")
- except Exception as err:
- print(err)
- #########################
- """
- process_list = "\n".join(os.popen("ps aux | less").read().splitlines())
- try:
- SUBJECT,TEXT = "",""
- fromaddr = 'dezsobence98@gmail.com'
- toaddrs = 'dj@onlygame.hu'
- if warninglevel == 2:
- SUBJECT = "Emma kikapcsolva ||| Processzor tulmelegedett"
- TEXT = "Emma tulmelegedett, automatikusan kikapcsolva.\n\n"+\
- "\n".join(self.mitortent)+"\n***ps aux | less***\n"+process_list
- else:
- SUBJECT = "Processzor tulmelegedett! |Figyelmeztetes|"
- TEXT = "\n".join(self.mitortent)+"\n\n***ps aux | less***\n"+process_list
- msg = 'Subject: %s\n\n%s' % (SUBJECT, TEXT)
- username = 'dezsobence98@gmail.com'
- password = pw.mailpw
- server = smtplib.SMTP('smtp.gmail.com:587')
- server.starttls()
- server.login(username,password)
- server.sendmail(fromaddr, toaddrs, msg)
- server.quit()
- print("Sikeres mail kuldes")
- except Exception as err:
- print(err)
- """
- def shutdownEmma(self):
- print("A szerver 1 perc múlva leáll.")
- print("Túl nagy a terhelés.")
- time.sleep(65)
- os.popen("echo %s | sudo -S shutdown" % (rootpw))
- if __name__ == "__main__":
- temp = os.popen('sensors').read().splitlines()
- sensor = homerseklet_check(temp)
- warninglevel = sensor.warning()
- sensor.usage_()
- if warninglevel != 0:
- sensor.send_mail(warninglevel)
- #sensor.log()
- sensor.sql_log()
- print(str(sensor))
- if warninglevel == 2:
- sensor.shutdownEmma()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement