--- /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:
+