summaryrefslogtreecommitdiff
path: root/source4/scripting/python/samba_external/dnspython/examples/ddns.py
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-03-05 11:45:40 +1100
committerAndrew Tridgell <tridge@samba.org>2010-03-05 11:54:36 +1100
commit7d86257d54cb59d016a051b91bdee62ab2f8a0d5 (patch)
treeca682263ae2dffeaf58134e47080078864df64d4 /source4/scripting/python/samba_external/dnspython/examples/ddns.py
parentf3ca7a4696cadbb74f41dd71ef9336445682d406 (diff)
downloadsamba-7d86257d54cb59d016a051b91bdee62ab2f8a0d5.tar.gz
samba-7d86257d54cb59d016a051b91bdee62ab2f8a0d5.tar.bz2
samba-7d86257d54cb59d016a051b91bdee62ab2f8a0d5.zip
s4-python: import a copy of the python dns library
This library is not installed on enough systems for us to rely on it being available. We use the system copy if possible, and fallback to this local copy Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/scripting/python/samba_external/dnspython/examples/ddns.py')
-rwxr-xr-xsource4/scripting/python/samba_external/dnspython/examples/ddns.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/source4/scripting/python/samba_external/dnspython/examples/ddns.py b/source4/scripting/python/samba_external/dnspython/examples/ddns.py
new file mode 100755
index 0000000000..84814b73cf
--- /dev/null
+++ b/source4/scripting/python/samba_external/dnspython/examples/ddns.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+
+#
+# Use a TSIG-signed DDNS update to update our hostname-to-address
+# mapping.
+#
+# usage: ddns.py <ip-address>
+#
+# On linux systems, you can automatically update your DNS any time an
+# interface comes up by adding an ifup-local script that invokes this
+# python code.
+#
+# E.g. on my systems I have this
+#
+# #!/bin/sh
+#
+# DEVICE=$1
+#
+# if [ "X${DEVICE}" == "Xeth0" ]; then
+# IPADDR=`LANG= LC_ALL= ifconfig ${DEVICE} | grep 'inet addr' |
+# awk -F: '{ print $2 } ' | awk '{ print $1 }'`
+# /usr/local/sbin/ddns.py $IPADDR
+# fi
+#
+# in /etc/ifup-local.
+#
+
+import sys
+
+import dns.update
+import dns.query
+import dns.tsigkeyring
+
+#
+# Replace the keyname and secret with appropriate values for your
+# configuration.
+#
+keyring = dns.tsigkeyring.from_text({
+ 'keyname.' : 'NjHwPsMKjdN++dOfE5iAiQ=='
+ })
+
+#
+# Replace "example." with your domain, and "host" with your hostname.
+#
+update = dns.update.Update('example.', keyring=keyring)
+update.replace('host', 300, 'A', sys.argv[1])
+
+#
+# Replace "10.0.0.1" with the IP address of your master server.
+#
+response = dns.query.tcp(update, '10.0.0.1', timeout=10)