equal
deleted
inserted
replaced
|
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 |