Script prüft auf die aktuelle externe IP-Adresse und gleicht sie mit der gespeicherten ab. Bei Abweichung (=IP-Wechsel) wird eine E-Mail versendet.
Task 1: Datei IPfile.txt in /home/pi anlegen
Task 2: Folgenden Code in einer neuen Datei unter dem Namen IPmail.py im gleichen Pfad abspeichern:
import socket
import re
import smtplib
# Python3:
from urllib.request import urlopen
# Python2 (deprecated):
# from urllib2 import urlopen
# Define timeout (in seconds) if server is not available
timeout=10
socket.setdefaulttimeout(timeout)
# SETUP: Login credentials of mailbox, mailserver etc.
from_address = 'PLEASE_FILL_OUT'
to_address = 'PLEASE_FILL_OUT'
username = 'PLEASE_FILL_OUT'
password = 'PLEASE_FILL_OUT'
server = smtplib.SMTP('PLEASE_FILL_OUT')
# Define IP address service
url = 'http://ip.fnord.eu'
print ("Active IP address service:",url)
# Open up the URL, then read the contents and start UTF-8 decoding
request = urlopen(url).read().decode('utf-8')
# Extract the IP address only
myIP = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", request)
myIP = str(myIP)
print ("The actual IP address is:",myIP)
def send_email(myIP):
subject = 'Info: external IP changed'
body_text = myIP + ' is your new IP address'
message = '\r\n'.join(['To: %s' % to_address,
'From: %s' % from_address,
'Subject: %s' % subject,
'', body_text])
# Actually send the email
server.starttls()
server.login(username,password)
server.sendmail(from_address, to_address, message)
server.quit()
print ("The notification (E-Mail) was sent to recipient's address.")
# Open up IPfile.txt and extract the contents
with open ('/home/pi/IPfile.txt', 'rt') as IPfile:
IPfile = IPfile.read() # Read the text file
# Check if IP address has changed
if IPfile == myIP:
print ("Your IP address did not change.")
else:
print ("You got a new IP address.")
with open('/home/pi/IPfile.txt', 'wt') as IPfile:
IPfile.write(myIP)
print ("The new IP address was saved successfully.")
send_email(myIP)
Task 3: Cronjob via SSH anlegen
crontab -e
Am Ende folgende Zeile einfügen, damit das Script alle 2 Minuten ausgeführt wird und bei Verlassen speichern:
*/2 * * * * python3 /home/pi/IPmail.py
Dieses Python-Script basiert auf einem
YouTube-Tutorial von Alexander Baran-Harper und wurde für den persönlichen Gebrauch modifiziert / erweitert.