Löysin sen virheen crontabista ja ip päivittyy nyt automaattisesti.
Jotta itse saisin tiedon myös ip:n vaihtumisesta kirjoitin pythonilla ohjelman joka hakee ip osoitteen ja vertaa sitä vanhaan.
Jos ip on muuttunut kirjoittaa se vanhan ip:n päälle ja lähettää spostin muuttuneesta ip osoitteesta.
Saan Tällaisen errorin.
>>> ================================ RESTART ================================
>>>
Tarkistetaan IP osoitetta: http://checkip.dyndns.org
Mökkipii IP osoite on: ['46.132.189.249']
IP osoite ei ole muuttunut.
>>> ================================ RESTART ================================
>>>
Tarkistetaan IP osoitetta: http://checkip.dyndns.org
Mökkipii IP osoite on: ['46.132.189.249']
Meillä on uusi IP osoite.
Uusi IP osoite on kirjoitettu txt tiedostoon.
Traceback (most recent call last):
File "/home/pi/pi/ipemail/ipemail.py", line 50, in <module>
send_email(ourIP)
File "/home/pi/pi/ipemail/ipemail.py", line 31, in send_email
server = smtplib.SMTP('smtp.gmail.com:587')
NameError: name 'smtplib' is not defined
>>>
Ilmeisesti ongelma miksi sähköposti ei tule perille johtuu gmailista. Olen asettanut gmailista sen "vähemmän turvalliset ohjelmat sallitaan" tai jotain.
Kaikki muu siis näyttäisi toimivan, hakee ip osoitteen checkip.dydns.org sivulta ja vertaa sitä last_ip.txt tiedostossa olevaan osoitteeseen.
Koko ohjelma alla.
from urllib.request import urlopen
import re
# Kirjautumistiedot
from_address = 'Piin_spostiosoite@gmail.com'
to_address = 'Piin_spostiosoite@gmail.com'
subject ='pi IP'
username = 'käyttäjätunnus'
password = 'salasana'
# Mistä saadaan IP osoite??
url = 'http://checkip.dyndns.org'
print ("Tarkistetaan IP osoitetta: ", url)
# Avataan sivu, luetaan sisältö ja otetaan IP osoite
request = urlopen(url) .read() .decode('utf-8')
# Puretaan vain IP osoite
ourIP = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", request)
ourIP = str(ourIP)
print ("MökkiPii IP osoite on: ", ourIP)
def send_email(ourIP):
# Sähköposti
body_text = ourIP + ' on MökkiPii IP osoite'
msg = '\r\n'.join(['to: %s' % to_address,
'From: %s' % from_address,
'Subject: %s' % subject,
'', body_text])
# Varsinaisen Sähköpostin lähettäminen!
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls () # Our security for transmission of credentials
server.login (username,password)
server.sendmail (from_address, to_address, msg)
server.quit ()
print ("Sähköposti lähetetty!")
# Avaa viimeisin last_ip.txt, vertaa sitä
with open('/home/pi/pi/ipemail/last_ip.txt', 'rt') as last_ip:
last_ip = last_ip.read() # lukee teksti tiedoston
# Varmistaa onko IP osoite muuttunut
if last_ip == ourIP:
print ("IP osoite ei ole muuttunut.")
else:
print ("Meillä on uusi IP osoite.")
with open ('/home/pi/pi/ipemail/last_ip.txt', 'wt') as last_ip:
last_ip.write(ourIP)
print ("Uusi IP osoite on kirjoitettu txt tiedostoon.")
send_email(ourIP)