I maintain a system at home in case I need to proxy my connection elsewhere or otherwise need some Unix tools. The system is behind a NetGear router which is directly connected to my cable modem. The router is capable of using some dynamic DNS services, but since my IP rarely changes, I just have a script setup on a system behind the router to check and send me a text message if my public IP changes. I run this script out of cron every 15 minutes. It depends on lynx being installed (typical) and on systemj.net being reachable. #!/bin/sh CACHE=/tmp/ip-check-cache.txt LASTIP=`cat ${CACHE}` CURRENTIP=`lynx --dump http://systemj.net/myip.xhtml | sed -e '/^$/d' -e 's/ //g'` MAILTO="user@example.com" if test "${LASTIP}" = "${CURRENTIP}" then exit 0 else echo "${CURRENTIP}" | tee ${CACHE} | mail ${MAILTO} fi When systemj.net was offline for a while I had a work-around setup with traceroute; instead of the lynx command above I used this: /usr/sbin/traceroute -n 72.29.100.156 2>/dev/null | head -1 | awk '{ print $2 }' This was all done under NetBSD.