Detect public IP address change and send email

I really, really should stop scripting in VBscript. It is boo, boo and is already 10+ years replaced by Powershell. Having said that, I needed a simple method to detect a change on a dynamic assigned public IP address. 

Note: for the SendMail function check this post.

This is the script:

    on error resume next

    dim fso, wsh
    set fso = Createobject("scripting.filesystemobject")
    set wsh = CreateObject("")

    const key = "HKEY_CURRENT_USER\SOFTWARE\getPublicIP\publicIPaddress"
    if isnull(wsh.regRead(key)) then wsh.Regwrite key,"", "REG_SZ"
    '--- Get public IP address...
    Set objHTTP = CreateObject("Msxml2.XMLHTTP") "GET", "", False
    t = split(Cstr(objHTTP.responseText),chr(34))
    currentIPaddress = t(3)

    '--- Read previous IP address...
    previousIPaddress = wsh.regRead(key)

    '--- Compare and when changed, send email with new IP address...
    if currentIPaddress <> previousIPaddress then

        s = "Public IP address has changed." & vbCrLF
        s = s  & "Previous IP address: " & previousIPaddress & vbCrLf
        s = s  & "Current IP address : " & currentIPaddress & vbCrLf
        wscript.echo "Sending email:" &vbCrLf & s
        if sendmail(s) = 0 then
            wscript.echo "*** Succesfully sent email."
            wsh.Regwrite key, currentIPaddress, "REG_SZ"
            wsh.LogEvent 0,s
            wscript.echo "*** Error sending email"
        end if  
        wscript.echo "*** Public IP address not changed: " & currentIPaddress
    end if

No comments :

Post a Comment

Real Time Web Analytics