dns-tool.pl
changeset 0 78c87a54521e
child 1 146563ba991e
equal deleted inserted replaced
-1:000000000000 0:78c87a54521e
       
     1 #! /usr/bin/perl
       
     2 
       
     3 use strict;
       
     4 use warnings;
       
     5 use Pod::Usage;
       
     6 use File::Basename;
       
     7 
       
     8 my $ME = basename $0;
       
     9 
       
    10 my $opt_ttl = 3600;
       
    11 my $opt_domain;
       
    12 
       
    13 my $opt_resolv = "/etc/resolv.conf";
       
    14 
       
    15 MAIN: {
       
    16     pod2usage() if @ARGV == 0;
       
    17 
       
    18     if (!$opt_domain) {
       
    19 	local @ARGV = ($opt_resolv);
       
    20 	$opt_domain = (split " ", (grep /^\s*(?:domain|search)\s+/, <>)[-1])[1];
       
    21 
       
    22 	die "$ME: Can't guess the local domain from \"$opt_resolv\"\n"
       
    23 	    if not $opt_domain;
       
    24     }
       
    25 
       
    26     my ($host, @aliases) = map { /\./ ? $_ : "$_.$opt_domain" } split /:/, shift;
       
    27     my $ip = shift;
       
    28 
       
    29     pod2usage() if !@aliases and not $ip;
       
    30 
       
    31     print "update add $host $opt_ttl CNAME $_\n" foreach @aliases;
       
    32     print "update add $host $opt_ttl A $ip\n" if defined $ip;
       
    33     print "send\n";
       
    34 
       
    35     if ($ip) {
       
    36 	my $rev_ip = (join ".", reverse split /\./, $ip) . ".in-addr.arpa";
       
    37 	print "update add $rev_ip $opt_ttl PTR $host\n"
       
    38 	    . "send\n";
       
    39     }
       
    40 }
       
    41 
       
    42 __END__
       
    43 
       
    44 =head1 NAME
       
    45 
       
    46 dnstool - interface to nsupdate
       
    47 
       
    48 =head1 SYNOPSIS
       
    49 
       
    50  dns-tool host[:alias:...] ip
       
    51  dns-tool host:alias:...
       
    52 
       
    53 =head1 DESCRIPTION
       
    54 
       
    55 =head1 OPTIONS
       
    56 
       
    57 =cut
       
    58 
       
    59 # vim:sts=4 sw=4 aw ai sm:
       
    60