dns-tool.pl
changeset 1 146563ba991e
parent 0 78c87a54521e
child 2 5aadea85f162
--- a/dns-tool.pl	Thu Nov 20 18:16:17 2008 +0000
+++ b/dns-tool.pl	Fri Nov 21 12:46:27 2008 +0000
@@ -4,17 +4,34 @@
 use warnings;
 use Pod::Usage;
 use File::Basename;
+use Getopt::Long;
 
 my $ME = basename $0;
 
+my $opt_delete = 0;
 my $opt_ttl = 3600;
+my $opt_help;
+my $opt_man;
+
 my $opt_domain;
 
 my $opt_resolv = "/etc/resolv.conf";
 
 MAIN: {
+
+    GetOptions(
+	"d|delete" => \$opt_delete,
+	"ttl=i" => \$opt_ttl,
+	"help" => sub { pod2usage(-verbose => 1, exit => 0) },
+	"man" => sub { pod2usage(-verbose => 2, exit => 0) },
+    ) or pod2usage();
     pod2usage() if @ARGV == 0;
 
+    die "HH";
+
+    my @out;
+    my $action = $opt_delete ? "delete" : "add";
+
     if (!$opt_domain) {
 	local @ARGV = ($opt_resolv);
 	$opt_domain = (split " ", (grep /^\s*(?:domain|search)\s+/, <>)[-1])[1];
@@ -28,15 +45,17 @@
 
     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";
+    push @out, "update $action $_ $opt_ttl CNAME $host" foreach @aliases;
+    push @out, "update $action $host $opt_ttl A $ip" if defined $ip;
+    push @out, "send" if @out;
 
     if ($ip) {
 	my $rev_ip = (join ".", reverse split /\./, $ip) . ".in-addr.arpa";
-	print "update add $rev_ip $opt_ttl PTR $host\n"
-	    . "send\n";
+	push @out, "update $action $rev_ip $opt_ttl PTR $host",
+	   "send";
     }
+
+    print join "\n", @out, "";
 }
 
 __END__
@@ -47,13 +66,49 @@
 
 =head1 SYNOPSIS
 
- dns-tool host[:alias:...] ip
- dns-tool host:alias:...
+ dns-tool [-d|--delete] [--ttl=<ttl>] host[:alias:...] ip
+ dns-tool [-d|--delete] [--ttl=<ttl>] host:alias:...
 
 =head1 DESCRIPTION
 
+This tool helps you using C<nsupdate>, it doesn't update anything itself, it just
+produces output suitable for C<nsupdate>.
+
+=head2 EXAMPLES
+
+    dns-tool seb-pc3454:lohn 172.20.2.2 | nsupdate
+
 =head1 OPTIONS
 
+=over
+
+=item B<-d>|B<--delete>
+
+Instead of adding, B<delete> the items. (default: off)
+
+=item B<--ttl>=I<ttl>
+
+Set the TTL (unit: seconds) of the inserted records (default: 3600)
+
+=item B<-h>|B<--help>
+=item B<-m>|B<--man>
+
+Help resp. manual page.
+
+=back
+
+
+
+=head1 COPYRIGHT, VERSION and AUTHOR
+
+This tool is released under terms of Gnu Public License in its
+current version.
+
+    $Id$
+    $URL$
+
+    Heiko Schlittermann <hs@schlittermann.de>
+
 =cut
 
 # vim:sts=4 sw=4 aw ai sm: