# HG changeset patch # User Heiko Schlittermann (JUMPER) # Date 1419896801 -3600 # Node ID 2d11bbd7be1e8d12ba5ee619ca5d427cf41c5bb8 # Parent cff9b7e57f19c13b0ba9d6ffee0c809d8ffe2f94 added manpage and help diff -r cff9b7e57f19 -r 2d11bbd7be1e plugins/check_dns-serial --- 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';