Zoneclient is easy to install and very easy to use. Root access is not required and no configuration files are needed. Just specify your username, password and hostname(s) on the command line (or cron entry). You can specify the interface (default ppp0) to search for your ip address on or use web based IP detection. There is also direct support for determining the IP address on the various devices.
Usage : zoneclient.py [options] Username Password Hostnames or zoneclient.py [options] --acctfile acct_info_file Options: -a address manually specify the address -d dir directory for data files (default current) -e script execute script after a successful update -f force update regardless of current state -h print the detailed help text --help print all available help text -i interface interface for local address (default ppp0) -l log debugging text to zoneclient.log file --syslog log debugging text to syslog (Unix only) -m set mx type -n set node name -q quiet mode (unless there is an error) -r URL NAT router, use web IP detection -t test run, do not send the update -v verbose mode --devices print router options (Linksys, Netgear, etc) Zones can be a comma separated list (no spaces). Example: python zoneclient.py username password zone1.org,zone2.org The script will locate the address of your router automatically by looking at the default route of the machine you are running on. Then it will read the status page for the external IP address and use that for updates. You need to specify the admin password with the appropriate option. -A password Askey or Dynalink RTA210/110 password -B password New Barricade with password on port 88 -F password SMC Barricade 2401 password -L password Linksys NAT router password -N password Netgear (RT311) NAT router password -8 password Netgear MR814 or FVS318 router password -T password Netgear (WGT634U) wireless router password -D password Draytek (Vigor2000) NAT router password -O password Netopia (R9100) NAT router password -P password MacSense XRouter Pro password -H password HawkingTech router password -W password Watchguard SOHO NAT firewall password -Y password Cayman DSL 3220H NAT router password -Q pword,iface password and interface for Instant Internet -2 password Compaq iPAQ Connection Point CP-2W password You can change the default username for the above devices with: -U username override default NAT router username leave this option out to use the default Devices that do not need a username: -X Nexland router (no password set) -J Westel6100 DSL Router -Z password ZyXEL prestige router password -S SMC Barricade (no password needed) -M password Compex NetPassage 15 -G UgatePlus (no password needed) -E Eicon Diva 2430 SE ADSL Modem (no password needed) -5 password DLink DI614P password -6 password DLink DI704 password -7 password DLink DI701 password -9 password DLink DI713P password -0 Belkin Pre-N (no password needed) Cisco devices: -C password Cisco (667i) DSL router password -I password Cisco (700 series) ISDN router password For Cisco IOS devices and any others that understand SNMP, you can also use --snmp to detect the external IP. --snmp snmp_agent,community,numeric_objectid You will need the pysnmp module from http://pysnmp.sourceforge.net/ You also need to know the agent, community and numeric objectid: python zoneclient.py --snmp 18.104.22.168,public,.22.214.171.124.126.96.36.199.5.4 ... where ... = username password hostnames Start zoneclient.py with no arguments to get the options screen. If -f is set, all hosts will be updated regardless of the current error, wait or IP state. You should never need this. You can place your username password and hostnames in a file (all on the first line) and use the --acctfile option if you do not wish your password to show up on a ps. The best way to run zoneclient is in the /etc/ppp/ip-up.local file but this won't work for many setups. The script will run from a cronjob. Just make sure the hostnames are the same in each execution. Also, you should make sure it is ran from the same directory each time or use the -d option to specify the directory where data and error files should be placed. The file zoneclient.dat contains the IP address and hostnames used in the last update. If the zoneclient.dat file is older than 25 days, an update will be made to touch the hostnames. The file zoneclient.err is created if the response is an error. It will not try to update again until this error is resolved. You must remove the file yourself once the problem is fixed. If your ISP has a badly behaved transparent proxy on port 80 traffic, you can try the -p option to use port 8245. If you wish to update multiple nodes then execute the script multiple times: python zoneclient.py -v myzone.com python zoneclient.py -v -n ftp myzone.com python zoneclient.py -v -n mail myzone.com The script can find your public IP address in one of several ways: 1) interface IP detection is the default method and appropriate if the machine you are running on has an interface with the public IP addressed assigned. The script knows how to query various operating systems for the address of an interface specified with the -i option (default ppp0). Note on Win32 systems you can specify the MAC address of the device after -i. 2) router IP detection is used if you have a routing device such as a Netgear RT311. Use the --devices option to get a help on specific devices. This method is used by the script if you specify one of the device-related options. 3) web IP detection may be used if your device is not supported This method is used if you specify the -r option. 4) you can explicitly set the desired IP address with -a If your have an unsupported device and are willing to help with some testing, email me. The zoneclient homepage can be found at: http://zoneclient.sourceforge.net/ Please include the zoneclient.log file if you email me with a problem. email@example.com