zoneclient homepage

[Source Forge]

Download the latest release

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


This is a simple Python script to register your dynamic IP address with zoneedit's dynamic IP DNS service.

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


kal@users.sourceforge.net