· 10 years ago · Jul 13, 2016, 08:09 PM
1import math
2import sys
3import random
4import os
5import datetime
6import time
7sys.path.insert(0, 'conn')
8import pw
9
10########################################################################################
11# #
12# Author Bence Dezso | CPU Temp Checker | Auto mail send when warning | Auto shutdown #
13# #
14########################################################################################
15
16
17class 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
132if __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()