zoneclient homepage

Please download the latest (> v0.60). Zoneedit changed a URL.

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 172.62.254.254,public,.1.3.5.2.1.2.10.2.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.
kal@users.sourceforge.net