Posted by & filed under Linux.

After moving to my new apartment, it was time to dust off the old Linksys router I had lying around. This thing has been hacked to run the latest DD-WRT that it could handle.

My network address changes occasionally, and I didn’t want to setup any dyndns accounts to keep track of the IP and have it resolve to a hostname. Honestly, just being able to get the last IP address is good enough for me.

So, I came up with this script that I run on one of my websites which listens for HTTP requests. When it gets one, it simply logs the IP to a file and spits it back out to the client.

Then, whenever I want to grab the IP address of the home network, I just hit another URL to grab the IP. The script is requested from my router every hour.

Configuration

Open your DD-WRT settings, go to Administration | Management, and scroll down till you see the section on CRON. You can add the following rule to have your router grab the file every hour:

*/60 * * * * root wget http://example.com/ping.php
Screen Shot 2013-05-16 at 11.01.28 PM

ping.php

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$handle = fopen("./ip.txt", 'w');
fwrite($handle, $ip);
fclose($handle);
echo $ip;

pong.php

<?php
echo file_get_contents("ip.txt");

Setup

touch ip.txt
chmod a+w ip.txt

Obtaining IP

Simply browse to http://example.com/pong.php to get the last known IP address.

3 Responses to “Track IP Address using DD-WRT + CRON + WGET”

  1. Steve

    SO excellent. I’ve been using various DDNS providers for years, mostly afraid.org in recent years, but it honestly has just never dawned on me to just roll my own. Clever. Thank you!

    Reply
  2. John Bob

    I’m retrieving the ip.txt directly, without the need for another php script.
    Additionally i have added a timestamp with:

    […]
    fwrite($handle, $ip);
    // prints something like: Wed, 25 Sep 2013 15:28:57 -0700
    fwrite($handle, date(DATE_RFC2822));
    fclose($handle);
    […]

    so i can see if the ip has been updated recently and my internet is therefore up

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>