I got a question from John this week:
“A few of my clients are using a broadband connection with DHCP addresses for the public interface. Do you know of a script or program that can be used to monitor the IP address and send a email if the IP address changes?”
Good question. It is possible to get IP address lists from VB Script, but we happen to have a utility we have used internally for quite some time. It is called “MyIP.exe”
MyIP.exe has two options. You can get a current list of IP addresses like this:
MyIP.exe /list
It will return a list of your current IP addresses to the command line:
C:\temp>myip /list
10.10.29.231
192.168.68.1
192.168.198.1
The second option is /wait. It will pause until it sees an IP change. When the change happens it will pause for 15 seconds to allow any DHCP addressing to settle down, and then finally return the result to the command line.
How do we set this up to email when we detect an IP change?
We can use blat. Blat is a tool for sending email from the command line.
Here is how I would structure a bat file to use both programs:
:Loop
@ECHO OFF
ECHO IP Address Change > status.log
ECHO ========================= >> status.log
ECHO The computer %COMPUTERNAME% has had an IP address change >> status.log
ECHO This is the new IP list: >> status.log
MyIP.exe /wait >> status.log
blat.exe -f support@intelliadmin.com -to support@intelliadmin.com -server mysmtp.server.com -subject "IP Change" -bodyF status.log
ECHO "Waiting for IP Change..."
goto loop
What is going on in the code above?
First we build up a file called status.log. It is filled with the body of our email. It contains everything except our list of changed IP addresses. Then MyIP.exe will wait until a change happens – when it does, those IPs are written to the end of status.log
Finally, blat sends out the text file with the subject “IP Change”. When that is done, it loops back around to wait for a change all over again.
One important thing to note about SMTP – Many internet providers are blocking send from port 25 by default, except to their own email servers. So make sure you test the script out before depending on it.
MyIP.exe can be found in our downloads section:
http://www.intelliadmin.com/index.php/downloads/
Blat can be found here:
One final note. Most likely you want this IP address information because you need to remote into their computer from time to time. Our Enterprise Remote control has this functionality built in. It will automatically track all IP address changes on remote machines, and you only need a username to find their computer! – Might save you a lot of time and trouble:)
One more thing…Subscribe to my newsletter and get 11 free network administrator tools, plus a 30 page user guide so you can get the most out of them. Click Here to get your free tools
{ 9 comments… read them below or add one }
Great tip steve! Thanks, and keep it up.
Any idea if blat can be made to support ssl smtp connections? That would make it a heck of a lot more useful 😉
Good question Jennifer. I don’t think it can support SSL connections. One of the ways we get around the port 25 restriction (I think that is why you would like the SSL) is to setup our own external SMTP server on another port. Then we configure it to only allow one destination, or alert email address.
Hope that helps,
Steve
Hello steve, could you please help me to find way to monitor specific user account and know which PC he is logon in domain environment.
Hello Mahmoud,
This is actually not an easy thing. Active Directory does not keep this information stored across the domain. You would need a piece of software that would monitor all the systems in your domain, and keep track of where users are at…so I don’t think this can be solved with a simple script.
Hello Steve.
i couldn’t find MYip.exe in the link you mentioned to download so i searched on net and downloaded it as i did for blat.but there is no two menu for Myip,it runs and give u just your ip and how can i use blat to send email ? i used you batch file but it didn’t work,where should i type my credential to use smtp server because i wanna use my gmail account and smpt.gmai.com for that.
and another thing i downloaded Enterprise Remote control to test but how should i configure it to send email when an ip changes ? it’s very important to me to know when an ip changes on a server or clients that i’m their administrator.
thanks in advance.
You don’t need 3rd party software for this, batch files and vbs will do exactly same job.
Hi Dean,
You are right…but it can get quite complex. Using this free tool makes it easier.
We would love it if you could post your VBS and BAT files. Then users would not need to add an additional exe to the mix.
Thanks,
Steve
Hi,
I have seen the IP.exe and is a very good tool. But is it possible to send this information (public IP) to the registry.
I need this so desktop management tools can get this information into the reporting server.
Thanks,
Jobin