File: index.html

package info (click to toggle)
ipcheck 0.225-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 236 kB
  • ctags: 68
  • sloc: python: 3,894; makefile: 47
file content (685 lines) | stat: -rw-r--r-- 27,431 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
<html>
<head><title>ipcheck.py</title></head>
<body
  bgcolor="black"
  text="beige"
  link="red"
  vlink="maroon"
  alink="beige"
>

<table width="100%" cellpadding=0 cellspacing=0 border=0>
<tr align=center>
  <td width="20%">
    <h1> ipcheck.py homepage </h1>
  </td>
  <td width="20%">
  <A href="http://sourceforge.net/projects/ipcheck"> 
    <img alt="[Source Forge]"
    src="http://sourceforge.net/sflogo.php?group_id=2752&amp;type=1" 
    width=88 height=31 border=0></a> 
  </td>
  <td width="60%">
    <a href="http://www.dyndns.org/">
    <img alt="[dyndns]"
    src="dyndns_anim.gif"></a>
  </td>
</tr>
</table>
<p>
<table width="100%" cellpadding=0 cellspacing=0 border=0>

<tr> <td bgcolor="#101010"> &nbsp; </td> <td bgcolor="#101010"> &nbsp; </td> </tr>

<tr align="center">
  <td bgcolor="#101010">
    <a href="ipcheck.py">Download the latest release</a>
  </td>
  <td bgcolor="#101010" align="left">
    <a href="changelog">View the changelog</a>
  </td>
</tr>

<tr> <td bgcolor="#101010"> &nbsp; </td> <td bgcolor="#101010"> &nbsp; </td> </tr>

<tr align="center">
  <td bgcolor="#101010">
    <a href="http://lists.sourceforge.net/lists/listinfo/ipcheck-announce">
    Mailing List
    </a>
  </td>
  <td bgcolor="#101010" align="left">
Very low volume list for announcements (avg 1 email per year)
  </td>
</tr>

<tr> <td bgcolor="#101010"> &nbsp; </td> <td bgcolor="#101010"> &nbsp; </td> </tr>

<tr align="center">
  <td bgcolor="#101010">
<a href="http://ipcheck.sourceforge.net/releases/">
Older Releases</a>
    </a>
  </td>
  <td bgcolor="#101010" align="left">
Older releases directory.
  </td>
</tr>

<tr> <td bgcolor="#101010"> &nbsp; </td> <td bgcolor="#101010"> &nbsp; </td> </tr>

</table>
<p>
We currently support all options and recommendations as of 
<b>February 16, 2005</b>.
<p>
<h2> Custom Domains </h2>
We support updating your 
<a href="http://www.dyndns.org/services/custom/">
MyDynDns custom domains
</a>
with the -c option.
Note that you need to keep separate data files if you want to
update both your custom domains and your dyndns domains.  Example:
<pre>
python ipcheck.py -c -l -d /etc/mydyndns uname pword foo.com
python ipcheck.py -l -d /etc/dyndns uname pword foo.dyndns.org,bar.dyndns.org
</pre>
<p>
<h2> Introduction </h2>
<p>
This is a simple Python script to register your dynamic IP address
using the NIC V2.0 protocol.
We aim to be fully compliant with the dyndns 
<a href="http://support.dyndns.org/dyndns/clients/devel/"> 
client specification.
</a>
A big thank you to everyone that has contributed to this script
or sent along a note of encouragement.  I try to keep organized
with who sent in what but if I've missed something in the 
acknowledgements section of the script, please let me know.
<p>
The script is very easy to use and supports multiple methods 
for determining the external IP (parsing interfaces on the 
local machine, 
<a href="http://checkip.dyndns.org/">
web based IP detection</a>,
direct support for devices from
Linksys, Netgear, Draytek, Netopia, HawkingTech, Watchgard, Cayman,
Nexland, ZyXEL, SMC, Compex, UgatePlus, DLink and Cisco).
<p>
Run the script with no command line arguments for quick start
instructions.

<h2> Documentation </h2>
<pre>
Make sure you can write to the current directory for data
files and that you always run from the same directory.
The first time you run the script, you will be asked to run
with the --makedat option.  This will create the data files
and complete the update.  You should only do this once.
Subsequent runs should be made without the --makedat option.

For help with different options: python ipcheck.py -h
For supported devices listing  : python ipcheck.py --devices
For long detailed help text    : python ipcheck.py --help

In the following examples, ... = username password hostnames
where hostnames is a comma separated list of hosts you wish
to be updated.  The -l option creates an ipcheck.log file.

Example 1: the external IP is on eth0 of the current machine
python ipcheck.py -l -i eth0 ...

Example 2: you are using the Linksys routing device
python ipcheck.py -l -L linksyspassword ...

Example 3: you want to use web based ip detection
python ipcheck.py -l -r checkip.dyndns.org:8245 ...

Usage  : ipcheck.py [options] Username Password Hostnames
or       ipcheck.py [options] --acctfile acct_info_file 

Options:  -a address     manually specify the address 
          -b             backup mx option ON (default OFF) 
          -c             custom dns option (default dynamic) 
          -d dir         directory for data files (default current)
          -e script      execute script after a successful update 
          -f             force update regardless of current state 
          -g             NAT router, let dyndns guess your IP 
                         (do not use this in a cronjob, try -r) 
          -h             print this help text 
          --help         print all available help text 
          -i interface   interface for local address (default ppp0) 
          -l             log debugging text to ipcheck.log file 
          --syslog       log debugging text to syslog (Unix only) 
          -m mxhost      mx host to send if -b (default none) 
          -o             set dyndns offline mode 
          -p             proxy bypass on port 8245 
          -q             quiet mode (unless there is an error) 
          -r URL         NAT router, use web IP detection 
          -s             static dns option (default dynamic) 
          -t             test run, do not send the update 
          -v             verbose mode 
          -w             wildcard mode ON (default OFF) 
          --makedat      create the ipcheck.dat file by dns lookup
          --devices      print router options (Linksys, Netgear, etc)

For help with different options: python ipcheck.py -h
For supported devices listing  : python ipcheck.py --devices
For long detailed help text    : python ipcheck.py --help


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. 

          -L password    Linksys (BEFSR41) NAT router password 
          -N password    Netgear (RT311) NAT router password 
          -D password    Draytek (Vigor2000) NAT router password 
          -O password    Netopia (R9100) NAT router password 
          -H password    HawkingTech router password 
          -W password    Watchguard SOHO NAT firewall password 
          -Y password    Cayman DSL 3220H NAT router 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) 
          -Z password    ZyXEL prestige router password 
          -S             SMC Barricade (no password needed) 
          -M password    Compex NetPassage 15 
          -G             UgatePlus (no password needed) 
          -7 password    DLink DI701 password 

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 ipcheck.py --snmp 172.62.254.254,public,.1.3.5.2.1.2.10.2.5.4 ...
where ... = username password hostnames 


Start ipcheck.py with no arguments to get some quick examples.

The script creates data files in the current working directory.
Make sure you have write permission and that you run the script
from the same directory each time.  You can use the -d option
to specify an alternate directory for data files. 

The first time you run the script, you will be asked to run
with the --makedat option.  This will create the data files
and complete the update.  You should only do this once.
Subsequent runs should be made without the --makedat option.

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 ipcheck is in the /etc/ppp/ip-up.local file 
or the BSD ppp.linkup file (you will need to sleep 30 before 
running the script since ppp.linkup runs before the link is up.) 
The script will also run from a cronjob.  Just make sure the 
hostnames are the same in each execution.  You should make sure
it is using the same directory each time for data files.  The -d 
option can be used to specify where data files go.

The file ipcheck.dat contains the IP address and hostnames 
used in the last update.  If the ipcheck.dat file is older 
than 25 days, an update will be made to touch 
the hostnames. 

The file ipcheck.wait is created if dyndns requests a wait 
before retrying.  This file will be automatically removed when 
the wait is no longer in effect. 

The file ipcheck.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 a http message is sent to dyndns.org, the response will be 
saved in the ipcheck.html file.

Custom domains can be specified with the -c option.  You must 
first complete the create database step on the Dyndns web page. 
Suppose you have the domain ipcheck.org defined as an A record 
and your nodes aliased to ipcheck.org with CNAME records.  Use: 
python ipcheck.py -c username password ipcheck.org 

Note that if you intended to maintain both a custom domain and 
a dyndns domain (ie. ipcheck.dyndns.org) you should be using 
the -d option to keep the data files in separate directories. 
The custom domains are not compatible with the offline, mx, 
backmx and wildcard options.  Setup your database accordingly. 

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 
specify the MAC address device after -i and on BeOS systems 
specify the interface number after -i (eg. -i 1). 

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
python ipcheck.py -r checkip.dyndns.org:8245 ... 
where ... = username password hostnames 
This method is used if you specify the -r option.
IMPORTANT: Do not run web based IP detection more often 
than once every 15 minutes.  It is costing dyndns bandwidth. 

4) you can explicitly set the desired IP address with -a

5) when -g is used, the script will not send any IP address
at all (even ones detected by the previous options).  Only
the account information will be sent to the dyndns server.
The dyndns server will assign the hostnames to the source
IP address of the request.  The assigned address is saved in
the ipcheck.dat file.  IMPORTANT: Do not run this from a cronjob
unless you know the address saved in the ipcheck.dat file 
matches locally detected public IP to prevent unnecessary updates.

If your have an unsupported device and are willing to help with
some testing, email me. 

The ipcheck homepage can be found at:
http://ipcheck.sourceforge.net/

Client development information can be found at:
http://support.dyndns.org/dyndns/clients/devel/

Please include the ipcheck.log file if you email me with a problem. 
kal@users.sourceforge.net

</pre>


<br>
<a href = "mailto:kal@users.sourceforge.net">kal@users.sourceforge.net</a>
<br>
</html>
<html>
<head><title>ipcheck.py</title></head>
<body
  bgcolor="black"
  text="beige"
  link="red"
  vlink="maroon"
  alink="beige"
>

<table width="100%" cellpadding=0 cellspacing=0 border=0>
<tr align=center>
  <td width="20%">
    <h1> ipcheck.py homepage </h1>
  </td>
  <td width="20%">
  <A href="http://sourceforge.net/projects/ipcheck"> 
    <img alt="[Source Forge]"
    src="http://sourceforge.net/sflogo.php?group_id=2752&amp;type=1" 
    width=88 height=31 border=0></a> 
  </td>
  <td width="60%">
    <a href="http://www.dyndns.org/">
    <img alt="[dyndns]"
    src="dyndns_anim.gif"></a>
  </td>
</tr>
</table>
<p>
<table width="100%" cellpadding=0 cellspacing=0 border=0>

<tr> <td bgcolor="#101010"> &nbsp; </td> <td bgcolor="#101010"> &nbsp; </td> </tr>

<tr align="center">
  <td bgcolor="#101010">
    <a href="ipcheck.py">Download the latest release</a>
  </td>
  <td bgcolor="#101010" align="left">
    <a href="changelog">View the changelog</a>
  </td>
</tr>

<tr> <td bgcolor="#101010"> &nbsp; </td> <td bgcolor="#101010"> &nbsp; </td> </tr>

<tr align="center">
  <td bgcolor="#101010">
    <a href="http://lists.sourceforge.net/lists/listinfo/ipcheck-announce">
    Mailing List
    </a>
  </td>
  <td bgcolor="#101010" align="left">
Low volume list for announcements about major releases.
  </td>
</tr>

<tr> <td bgcolor="#101010"> &nbsp; </td> <td bgcolor="#101010"> &nbsp; </td> </tr>

<tr align="center">
  <td bgcolor="#101010">
<a href="http://ipcheck.sourceforge.net/releases/">
Older Releases</a>
    </a>
  </td>
  <td bgcolor="#101010" align="left">
Older releases directory.
  </td>
</tr>

<tr> <td bgcolor="#101010"> &nbsp; </td> <td bgcolor="#101010"> &nbsp; </td> </tr>

</table>

<p>
<h2> Introduction </h2>
<p>
This is a simple Python script to register your dynamic IP address
using the NIC V2.0 protocol.
We aim to be fully compliant with the dyndns 
<a href="http://support.dyndns.org/dyndns/clients/devel/"> 
client specification.
</a>
A big thank you to everyone that has contributed to this script
or sent along a note of encouragement.  I try to keep organized
with who sent in what but if I've missed something in the 
acknowledgements section of the script, please let me know.
<p>
We currently support all options and recommendations as of 
<b>June 12, 2001</b>, including 
<a href="http://www.dyndns.org/mydyndns/custom.shtml">
myDynDNS custom domains</a>. 
The script is very easy to use and supports multiple methods 
for determining the external IP (parsing interfaces on the 
local machine, 
<a href="http://checkip.dyndns.org/">
web based IP detection</a>,
direct support for devices from
Linksys, Netgear, Draytek, Netopia, HawkingTech, Watchgard, Cayman,
Nexland, ZyXEL, SMC, Compex, UgatePlus, DLink and Cisco).
<p>
Run the script with no command line arguments for quick start
instructions.

<h2> Documentation </h2>
<pre>

Make sure you can write to the current directory for data
files and that you always run from the same directory.
The first time you run the script, you will be asked to run
with the --makedat option in addition to any other options.
This will create the data files for the hostnames and options 
your specify on the command line.  You should only do this once.
Subsequent runs should be made without the --makedat option.

For help with different options: python ipcheck.py -h
For supported devices listing  : python ipcheck.py --devices
For long detailed help text    : python ipcheck.py --help

Example 1: the external IP is on eth0 of the current machine
python ipcheck.py -l -i eth0 username password hostnames

Example 2: you are using the Linksys routing device
python ipcheck.py -l -L linksyspassword username password hostnames

Example 3: you want to use web based ip detection
python ipcheck.py -l -r checkip.dyndns.org:8245 ...

where ... is your dyndns username password and hostnames.
Hostnames should be comma delimited if there are more than one.

Usage  : ipcheck.py [options] Username Password Hostnames
or       ipcheck.py [options] --acctfile acct_info_file 

Options: -a address     manually specify the address 
         -r URL         NAT router, use web IP detection 
         -A text        scan syslog for an IP after text (Unix only) 
         -F filename    guess the WAN IP from a firewall log 
         -b             backup mx option ON (default OFF) 
         -c             custom dns option (default dynamic) 
         -d dir         directory for data files (default current)
         -e script      execute script after a successful update 
         -f             force update regardless of current state 
         -g             NAT router, let dyndns guess your IP 
                        (do not use this in a cronjob, try -r) 
         -h             print this help text 
         --help         print all available help text 
         -i interface   interface for local address (default ppp0) 
         -l             log debugging text to ipcheck.log file 
         --syslog       log debugging text to syslog (Unix only) 
         -m mxhost      mx host (default NOCHG) 
         -o             set dyndns offline mode 
         -p             proxy bypass on port 8245 
         -q             quiet mode (unless there is an error) 
         -s             static dns option (default dynamic) 
         -t             test run, do not send the update 
         -v             verbose mode 
         -w             wildcard mode ON (default OFF) 
         --makedat      create the ipcheck.dat file by dns lookup
         --devices      print router options (Linksys, Netgear, etc)

For help with different options: python ipcheck.py -h
For supported devices listing  : python ipcheck.py --devices
For long detailed help text    : python ipcheck.py --help

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.

         --pfile        device password below is actually a filename 
         -B password    New Barricade with password on port 88
         --VWBR         Use with -B to indicate 7004VWBR Router
         -C password    Cisco (667i) DSL router password
         -D password    Draytek (Vigor2000) NAT router password
         -E             Eicon Diva (no password needed)
         -G             UgatePlus (no password needed)

         -H password    HawkingTech router password
         -I password    Cisco (700 series) ISDN router password
         -J password    ZyXEL prestige 642ME router password
         -K password    Compex NetPassage 15
         -L password    Linksys (BEFSR41) NAT router password
         -M password    MacSense password
         -N password    Netgear RT311 NAT router password
         -O password    Netopia (R9100) NAT router password
         -P port[,password]
                         Nexland Pro800Turbo, WAN port, port==any use the
                         first connected port; port=[01] use the port'th port
                         if available, else any; port=-[01] use port'th port
                         if available, else fail.  Specify password if
                         required.  For example, -P any,123 says to use the
                         first port and password 123.  -P 1 says prefer port
                         #1 and no password is required.  -P -0,xyz forces
                         port 0 and uses password xyz.
         -Q pword,iface password and interface for Instant Internet 
         -R password    Netgear FR3114 password
         -S             SMC Barricade (no password needed)
         --WBR password Use with -S if 2404WBR with password
         -T password    Alcatel Speed Touch Pro password
                        (you can also try -r 10.0.0.138/cgi/router/)
         -V password    Eicon Diva (see -E for no password)
         -W password    Watchguard SOHO NAT firewall password
         -X             Nexland router (no password set)
         -Y password    Cayman DSL 3220H NAT router password
         -Z password    ZyXEL 642R and Zywall 10 router password
         -1 password    DLink DSL504 password
	 -2 password    Siemens SpeedStream 2620 router password
         -3 password    Netgear RT338 ISDN router
         -4 password    Gnet model BB0040 ADSL router password
         -5             DLink DI704 with no password
         -6 password    DLink DI704 password
         -7 password    DLink DI701 password
         -8 password    DLink DI804/DI614+ password
         -9 password    DLink DI713P password
         --VT1000v      Motorola VT1000v VoIP voice terminal (no password needed)
         
You can change the default username for the above devices with:
 
         -U username    override the default NAT router username
                        leave this option out to use the default

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 v1.x pysnmp module from http://pysnmp.sourceforge.net/
The snmp code does not work with v2.x or 3.x of pysnmp
You also need to know the agent, community and numeric objectid:
python ipcheck.py --snmp 172.62.254.254,public,.1.3.5.2.1.2.10.2.5.4 ...
where ... = username password hostnames

Alternate/Generic SNMP retrieval
         --snmpget snmp_agent,community,numeric_objectid
You will need the v1.x pysnmp module from http://pysnmp.sourceforge.net/
The snmp code does not work with v2.x or 3.x of pysnmp
You also need to know the agent(hostname or ip), community and
numeric objectid:
python ipcheck.py --snmpget router,public,.1.3.6.1.4.1.343.6.23.1.12.1.2.3 ...
where ... = username password hostnames
This option will do a snmp get to the specified objectid which needs to be
that of the ip to be used in the update

         --forward port[/protocol],...
Ports to be forward from your router to this machine.
Defaults to tcp protocol. Stay set until router turned off.
example: -T password --forward=80,time/udp,21/6


Start ipcheck.py with no arguments to get some quick examples.

The script creates data files in the current working directory.
Make sure you have write permission and that you run the script
from the same directory each time.  You can use the -d option
to specify an alternate directory for data files. 

The first time you run the script, you will be asked to run
with the --makedat option.  This will create the data files
and complete the update.  You should only do this once.
Subsequent runs should be made without the --makedat option.

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 ipcheck is in the /etc/ppp/ip-up.local file 
or the BSD ppp.linkup file (you will need to sleep 30 before 
running the script since ppp.linkup runs before the link is up.) 
The script will also run from a cronjob.  Just make sure the 
hostnames are the same in each execution.  You should make sure
it is using the same directory each time for data files.  The -d 
option can be used to specify where data files go.

The file ipcheck.dat contains the IP address and hostnames 
used in the last update.  If the ipcheck.dat file is older 
than 25 days, an update will be made to touch 
the hostnames. 

The file ipcheck.wait is created if dyndns requests a wait 
before retrying.  This file will be automatically removed when 
the wait is no longer in effect. 

The file ipcheck.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 a http message is sent to dyndns.org, the response will be 
saved in the ipcheck.html file.

Custom domains can be specified with the -c option.  You must 
first complete the create database step on the Dyndns web page. 
Suppose you have the domain ipcheck.org defined as an A record 
and your nodes aliased to ipcheck.org with CNAME records.  Use: 
python ipcheck.py -c username password ipcheck.org 

Note that if you intended to maintain both a custom domain and 
a dyndns domain (ie. ipcheck.dyndns.org) you should be using 
the -d option to keep the data files in separate directories. 
The custom domains are not compatible with the offline, mx, 
backmx and wildcard options.  Setup your database accordingly. 

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 
specify the MAC address device after -i and on BeOS systems 
specify the interface number after -i (eg. -i 1). 

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
python ipcheck.py -r checkip.dyndns.org:8245 ... 
where ... = username password hostnames 
This method is used if you specify the -r option.
IMPORTANT: Do not run web based IP detection more often 
than once every 15 minutes.  It is costing dyndns bandwidth. 

4) you can explicitly set the desired IP address with -a

5) when -g is used, the script will not send any IP address
at all (even ones detected by the previous options).  Only
the account information will be sent to the dyndns server.
The dyndns server will assign the hostnames to the source
IP address of the request.  The assigned address is saved in
the ipcheck.dat file.  IMPORTANT: Do not run this from a cronjob
unless you know the address saved in the ipcheck.dat file 
matches locally detected public IP to prevent unnecessary updates.

If your have an unsupported device and are willing to help with
some testing, email me. 

The ipcheck homepage can be found at:
http://ipcheck.sourceforge.net/

Client development information can be found at:
http://support.dyndns.org/dyndns/clients/devel/

Please include the ipcheck.log file if you email me with a problem. 
kal@users.sourceforge.net

</pre>


<br>
<a href = "mailto:kal@users.sourceforge.net">kal@users.sourceforge.net</a>
<br>
</html>