# HG changeset patch # User heiko # Date 1227204977 0 # Node ID 78c87a54521e5db1f502197123d174d5485386b4 simple interface to nsupdate diff -r 000000000000 -r 78c87a54521e Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Thu Nov 20 18:16:17 2008 +0000 @@ -0,0 +1,33 @@ + +DESTDIR = + +prefix = /usr/local +sbindir = ${prefix}/sbin +bindir = ${prefix}/bin +man8dir = ${prefix}/man/man8 + +SCRIPTS = dns-tool +MAN8PAGES = $(SCRIPTS:=.8.gz) +CLEANFILES = $(SCRIPTS) $(MAN8PAGES) + + +.PHONY: all clean install + +all: $(SCRIPTS) $(MAN8PAGES) + +clean: + rm -f $(CLEANFILES) + +install: all + install -m 0755 -d ${DESTDIR}${sbindir}/ + install -m 0755 -d ${DESTDIR}${man8dir}/ + + install -m 0755 $(SCRIPTS) ${DESTDIR}${sbindir}/ + install -m 0644 $(MAN8PAGES) ${DESTDIR}${man8dir}/ + + +%: %.pl + install -m 0755 $< $@ + +%.8.gz: %.pl + pod2man --section 8 $< | gzip >$@ diff -r 000000000000 -r 78c87a54521e dns-tool.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dns-tool.pl Thu Nov 20 18:16:17 2008 +0000 @@ -0,0 +1,60 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use Pod::Usage; +use File::Basename; + +my $ME = basename $0; + +my $opt_ttl = 3600; +my $opt_domain; + +my $opt_resolv = "/etc/resolv.conf"; + +MAIN: { + pod2usage() if @ARGV == 0; + + if (!$opt_domain) { + local @ARGV = ($opt_resolv); + $opt_domain = (split " ", (grep /^\s*(?:domain|search)\s+/, <>)[-1])[1]; + + die "$ME: Can't guess the local domain from \"$opt_resolv\"\n" + if not $opt_domain; + } + + my ($host, @aliases) = map { /\./ ? $_ : "$_.$opt_domain" } split /:/, shift; + my $ip = shift; + + pod2usage() if !@aliases and not $ip; + + print "update add $host $opt_ttl CNAME $_\n" foreach @aliases; + print "update add $host $opt_ttl A $ip\n" if defined $ip; + print "send\n"; + + if ($ip) { + my $rev_ip = (join ".", reverse split /\./, $ip) . ".in-addr.arpa"; + print "update add $rev_ip $opt_ttl PTR $host\n" + . "send\n"; + } +} + +__END__ + +=head1 NAME + +dnstool - interface to nsupdate + +=head1 SYNOPSIS + + dns-tool host[:alias:...] ip + dns-tool host:alias:... + +=head1 DESCRIPTION + +=head1 OPTIONS + +=cut + +# vim:sts=4 sw=4 aw ai sm: +