simple interface to nsupdate
authorheiko
Thu, 20 Nov 2008 18:16:17 +0000
changeset 0 78c87a54521e
child 1 146563ba991e
simple interface to nsupdate
Makefile
dns-tool.pl
--- /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 >$@
--- /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:
+