dns-tool.pl
changeset 0 78c87a54521e
child 1 146563ba991e
--- /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:
+