--- a/plugins/check_dns-serial Tue Dec 30 00:37:59 2014 +0100
+++ b/plugins/check_dns-serial Tue Dec 30 00:46:41 2014 +0100
@@ -6,7 +6,6 @@
use Net::DNS;
use Pod::Usage;
-
my %resolver;
sub uniq { my %h; @h{@_} = (); return keys %h; }
@@ -34,7 +33,8 @@
my ($domain) = @_;
my @ns;
- my $r = $resolver{$nameserver} //= Net::DNS::Resolver->new(nameservers => [$nameserver]);
+ my $r = $resolver{$nameserver} //=
+ Net::DNS::Resolver->new(nameservers => [$nameserver]);
my $q = $r->query($domain, 'NS') or die $r->errorstring, "\n";
push @ns, map { $_->nsdname } grep { $_->type eq 'NS' } $q->answer;
@@ -46,7 +46,7 @@
my ($domain) = shift;
my $r = $resolver{$nameserver} //=
- Net::DNS::Resolver->new(nameservers => [$nameserver]);
+ Net::DNS::Resolver->new(nameservers => [$nameserver]);
my $q = $r->query($domain, 'SOA') or die $r->errorstring, "\n";
return (map { $_->serial } grep { $_->type eq 'SOA' } $q->answer)[0];
}
@@ -67,40 +67,55 @@
my @their = sort +get_ns($domain);
{
- local $" = "\0";
- return 1 if "@our" eq "@their";
+ local $" = "\0";
+ return 1 if "@our" eq "@their";
}
local $" = ', ';
die "NS differ (our @our) vs (their @their)\n";
-};
+}
sub main {
- my @argv = @_;
+ my @argv = @_;
my $opt_reference = '212.80.235.130';
- my $opt_progress = -t;
+ my $opt_progress = -t;
- GetOptionsFromArray(\@argv,
- 'reference=s' => \$opt_reference)
- and @argv or pod2usage;
+ GetOptionsFromArray(
+ \@argv,
+## Please see file perltidy.ERR
+## Please see file perltidy.ERR
+ 'reference=s' => \$opt_reference,
+ 'progress!' => \$opt_progress,
+ 'h|help' => sub { pod2usage(-verbose => 1, -exit => 0) },
+ 'm|man' => sub {
+ pod2usage(
+ -verbose => 2,
+ -exit => 0,
+ -noperldoc => system('perldoc -V 2>/dev/null 1>&2')
+ );
+ }
+ )
+ and @argv
+ or pod2usage;
my @domains = get_domains(@argv);
my (@OK, %CRITICAL);
foreach my $domain (@domains) {
- print STDERR "$domain " if $opt_progress;
- eval { ns_ok('@212.80.235.130', $domain) };
- if ($@) { $CRITICAL{$domain} = $@ }
- else { push @OK, $domain }
- say STDERR $@ ? 'not ok' : 'ok' if $opt_progress;
+ print STDERR "$domain " if $opt_progress;
+ eval { ns_ok('@212.80.235.130', $domain) };
+ if ($@) { $CRITICAL{$domain} = $@ }
+ else { push @OK, $domain }
+ say STDERR $@ ? 'not ok' : 'ok' if $opt_progress;
}
-# use DDP;
-# p @OK;
-# p %CRITICAL;
+ # use DDP;
+ # p @OK;
+ # p %CRITICAL;
if (my $n = keys %CRITICAL) {
- print "CRITICAL: $n of ".@domains." domains\n", map { "$_: $CRITICAL{$_}" } sort keys %CRITICAL;
- return 2;
+ print "CRITICAL: $n of " . @domains . " domains\n",
+ map { "$_: $CRITICAL{$_}" } sort keys %CRITICAL;
+ return 2;
}
say 'OK: ' . @OK . ' domains checked';