import urllib import smtplib import time import sys from socket import * import fcntl import struct def get_ip_address(ifname): s = socket(AF_INET, SOCK_STREAM) return inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15]))[20:24]) fromaddr="from@server.com" toaddrs=["to@server.net"] subject="Subject: from your server" mailserver="mail.server.com:8025" username="username" password="password" interface="eth0" myextipold = "myextipold" ipold = "ipold" while True : flagextip = False flagintip = False try : url = urllib.urlopen ("http://www.whatismyip.org") myextip = url.readline() url.close() except : print "Connection error" ip = get_ip_address (interface) if myextip != myextipold : flagextip = True msg = "External IP address changed to " + myextip if ip != ipold : flagintip = True if flagextip : msg = msg + '\n' + "Internal IP address changed to " + ip else : msg = "Internal IP address changed to " + ip if flagintip or flagextip : mailmsg = "From: %s\r\nTo: %s\r\n%s\r\n\r\n" % (fromaddr, toaddrs[0], subject) mailmsg = mailmsg + msg try : m = smtplib.SMTP() m.connect (mailserver) m.starttls() m.login (username, password) m.sendmail (fromaddr, toaddrs, mailmsg) m.quit() except : print "Connection error" myextipold = myextip ipold = ip time.sleep (600)