-
-
Save johnantoni/8199088 to your computer and use it in GitHub Desktop.
import subprocess | |
import smtplib | |
import socket | |
from email.mime.text import MIMEText | |
import datetime | |
# Change to your own account information | |
to = '[email protected]' | |
gmail_user = '[email protected]' | |
gmail_password = 'yourpassword' | |
smtpserver = smtplib.SMTP('smtp.gmail.com', 587) | |
smtpserver.ehlo() | |
smtpserver.starttls() | |
smtpserver.ehlo | |
smtpserver.login(gmail_user, gmail_password) | |
today = datetime.date.today() | |
# Very Linux Specific | |
arg='ip route list' | |
p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE) | |
data = p.communicate() | |
split_data = data[0].split() | |
ipaddr = split_data[split_data.index('src')+1] | |
my_ip = 'Your ip is %s' % ipaddr | |
msg = MIMEText(my_ip) | |
msg['Subject'] = 'IP For RaspberryPi on %s' % today.strftime('%b %d %Y') | |
msg['From'] = gmail_user | |
msg['To'] = to | |
smtpserver.sendmail(gmail_user, [to], msg.as_string()) | |
smtpserver.quit() |
or via a cronjob
crontab -e
then
@reboot python /home/pi/code/startup_mailer.py
looking at it the cron job is more reliable, placing it in the rc.local file fails on wifi
Thanks for the code you posted. On Raspberry Pi 3, Model B, I had to slightly change your startup_mailer.py script when I invoke it using Cron at booting time:
tries = 0
while True:
if (tries > 60):
exit()
try:
smtpserver = smtplib.SMTP('smtp.gmail.com', 587, timeout=30) # Server to use.
break
except Exception as e:
tries = tries + 1
time.sleep(1)
anassar's workaround worked for me. Then I realized I was calling the script from cron @reboot - without allowing for additional tries, apparently everything the python script needed had not loaded when the script ran and the script failed.
Another solution that works (and if leave anassar's code in the script and print out tries, it ALWAYS only needs 1 try) is to delay the running of the script. Can do in the cron command:
@reboot sleep 300 && python /path/to/python_script.py
Hey There. Thanks for this. Will make remote monitoring of my Pi much easier. Having an issue though.
Gmail refused the sign-in attempt. Sent me an email saying an app without modern security protocols is accessing my account.
Anyone experienced this or found a workaround?
Hey @bereshr1! Is there any chance you are using two step verification on your gmail account? That could be the issue.
found the solution and modified johnantoni's script. just tested and worked !
Hello! Sorry if i bring up this old thread but i get this error:
Traceback (most recent call last):
File "/home/pi/code/startup_mailer.py", line 21, in <module>
ipaddr = split_data[split_data.index('src')+1]
ValueError: 'src' is not in list
Any idea of how to fix it?
The 'src' is not in list is caused by python3. Try python2 instead.
This is awesome, might use it for something, can't think of a use yet.