-
-
Save LeonardoGentile/7a5330e6bc55860feee5d0dd79e7965d to your computer and use it in GitHub Desktop.
# coding=utf-8 | |
import os | |
import smtplib | |
from email.mime.text import MIMEText | |
critical = False | |
high = 60 | |
too_high = 80 | |
# At First we have to get the current CPU-Temperature with this defined function | |
def getCPUtemperature(): | |
res = os.popen('vcgencmd measure_temp').readline() | |
return(res.replace("temp=","").replace("'C\n","")) | |
# Now we convert our value into a float number | |
temp = float(getCPUtemperature()) | |
# Check if the temperature is abouve 60°C (you can change this value, but it shouldn't be above 70) | |
if (temp > high): | |
if temp > too_high: | |
critical = True | |
subject = "Critical warning! The temperature is: {} shutting down!!".format(temp) | |
body = "Critical warning! The actual temperature is: {} \n\n Shutting down the pi!".format(temp) | |
else: | |
subject = "Warning! The temperature is: {} ".format(temp) | |
body = "Warning! The actual temperature is: {} ".format(temp) | |
# Enter your smtp Server-Connection | |
server = smtplib.SMTP('localhost', 25) # if your using gmail: smtp.gmail.com | |
server.ehlo() | |
server.starttls() | |
server.ehlo | |
# Login | |
# server.login("your email or username", "your Password") | |
msg = MIMEText(body) | |
msg['Subject'] = subject | |
msg['From'] = "Root" | |
msg['To'] = "root" | |
# Finally send the mail | |
server.sendmail("root", "root", msg.as_string()) | |
server.quit() | |
# Critical, shut down the pi | |
if critical: | |
os.popen('sudo halt') | |
# Don't print anything otherwise. | |
# Cron will send you an email for any command that returns "any" output (so you would get another email) | |
# else: | |
# print "Everything is working fine!" |
Hi, sorry to bother Im a noob. Where exactly do you input your SMTP server, email, and password? Im using gmail. Thank you for your help.
you would modify these lines of code:
server = smtplib.SMTP('smtp.gmail.com', 587) # if you're using gmail: smtp.gmail.com
server.ehlo()
server.starttls()
server.ehlo
# Login
server.login("user@gmail.com", "your Password")
I know this reply is late.
Nb
This is a pretty nice little tool for monitoring devices. Nice work
Nb
im confused on how this thing even sends a email to me so do i just run the py file then it works? Also can you add maybe a configuration turorial
im confused on how this thing even sends a email to me so do i just run the py file then it works? Also can you add maybe a configuration turorial
1)As stated, change this line
server = smtplib.SMTP('smtp.gmail.com', 587) # if you're using gmail: smtp.gmail.com
With your smtp server. you can google it if it is not gmail.
2)Next change login and password as stated
server.login("user@gmail.com", "your Password")
- change
msg['From'] = "Root" // to actual FROM email address
msg['To'] = "root" // and actual TO email address , example: blabla@gmail.com
Because many smtp servers ask for actual address. - Next, change line: server.sendmail("root", "root", msg.as_string())
to:
server.sendmail(msg['From'], msg['To'], msg.as_string())
This should be enough, hope it helps.
LeonardoGentile, thanks very much for the script. Works perfectly.
I often forget I wrote this little script, I'm glad it's useful for someone else : ] 👍
hi, someone can help me
this is the code
# Enter your smtp Server-Connection
server = smtplib.SMTP('smtp.zoho.com', 465) # if your using gmail: smtp.gmail.com
server.ehlo()
server.starttls()
server.ehlo
# Login
server.login("degu@zoho.com", "mypass")
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = "degu@zoho.com"
msg['To'] = "degu@zoho.com"
# Finally send the mail
server.sendmail(msg['from'],msg['To'], msg.as_string())
server.quit()
# Critical, shut down the pi
if critical:
os.popen('sudo halt')
ERROR
Traceback (most recent call last):
File "ubi.py", line 29, in
server = smtplib.SMTP('smtp.zoho.com', 465) # if your using gmail: smtp.gmail.com
File "/usr/lib/python3.7/smtplib.py", line 251, in init
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.7/smtplib.py", line 338, in connect
(code, msg) = self.getreply()
File "/usr/lib/python3.7/smtplib.py", line 394, in getreply
raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
What's the difference between 30 * * * * python ~/scripts/temp.py
and */30 * * * * python ~/scripts/temp.py
?
My crontabs always had */30
to define "every 30th..."
What's the difference between
30 * * * * python ~/scripts/temp.py
and*/30 * * * * python ~/scripts/temp.py
? My crontabs always had*/30
to define "every 30th..."
30
means "at minute 30", so it only runs once every hour, while */30
means "on every 30 minutes", running twice every hour, at minutes 0 and 30.
Thank you very much.
Worked like a charm !
Awesome!
I modified with code from https://stackoverflow.com/questions/17541044/how-can-i-make-the-python-program-to-check-linux-services to shutdown and start services depending on the temp.