
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)
