summaryrefslogtreecommitdiff
path: root/update-dyndns
blob: b3209a87a0a47503cf2d670d978f6c24d12db601 (plain)
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
#!/bin/sh

# Simple DynDNS Host update script 
# (C) by Paul C. Buetow 2006
# Mail:  paul at buetow dot org
# WWW :  http://buetow.org
#
# You need a running BIND on a server box with root access.
# You also need a new zone for your dyndns host.
#
# 1) Add new user dyndns to your DNS server box.
# 2) Read the nsupdate manpage at find out how to use it. 
#    Create a nsupdate key called your-host-name if your host
#    is your.host.name. 
# 3) Copy the nsupdate key files of your host to ~dyndns and
#    chown them to the dyndns user.
# 4) Also read the ssh manpage because you need to gerenate 
#    a RSA Public Key if you want to update a dyndns host via
#    SSH without an interactive password prompt.
# 5) Create an empty /var/log/lastnsupdate.log file and chown
#    it to the user dyndns.
# 
# Further explanation:
# 
# Call this script from a DynDNS-client box:
# Syntax: 
#   ssh dyndns@dyndnsserver /path/to/dyndns-update \
#   your.host.name. TYPE new-entry TIMEOUT
# An real example: 
#   ssh dyndns@dyndnsserver /path/to/dyndns-update \
#   local.buetow.org. A 137.226.50.91 30
#
# Because its a dyndns host, we set the timeout to very low
# 30 seconds.
#
# If you use ppp on your client box, then you may add the 
# following lines to your /etc/ppp/ppp.linkup file:
#
#  ! sh -c "echo \"MYADDR `date`\" >> /var/log/ips.log"
#  !bg /usr/bin/ssh dyndns@dyndnsserver \
#   /path/to/update-dyndns your.host.name. A MYADDR 30
#
# Here you need to generate a SSH RSA public key to allow root
# to ssh into dyndns@dyndnsserver without a password. Ask 
# google or read the manpage and try it out! RTFM!
#
# your.host.name's A record should be changed to the dyndns 
# client's new ip address each time the internet protocol 
# number changes.
# You may use the tools nslookup and dig to check if its working.
#
# Thanks to Lars Engels for some nice ideas concerning 
# ppp.linkup and nsupdate! :).

host=$1
type=$2
addr=$3
timeout=$4

keyname=`echo $host | sed 's/\./-/g; s/-$/./'`

cat << NSUPDATE | tee /var/log/lastnsupdate.log | nsupdate -k $HOME/:$keyname
update delete $host $type
update add $host $timeout IN $type $addr
send
NSUPDATE