From e1e0202ad2a482b348037cdacd0cf058444924a1 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Sun, 7 Feb 2010 17:03:07 +0100 Subject: [PATCH] allow setting of thresholds on the command line --- .../checks/dsa-check-zone-rrsig-expiration | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/dsa-nagios-checks/checks/dsa-check-zone-rrsig-expiration b/dsa-nagios-checks/checks/dsa-check-zone-rrsig-expiration index 02fd72b..45918a4 100755 --- a/dsa-nagios-checks/checks/dsa-check-zone-rrsig-expiration +++ b/dsa-nagios-checks/checks/dsa-check-zone-rrsig-expiration @@ -76,8 +76,21 @@ use Time::HiRes qw ( gettimeofday tv_interval); use Time::Local; use List::Util qw ( shuffle ); +sub convert_time { + my $in = shift; + my ($ticks, $unit) = ($in =~ /^(\d+)([smhdw]?)$/); + + if ($unit eq 's' || $unit eq '') { } + elsif ($unit eq 'm') { $ticks *= 60; } + elsif ($unit eq 'h') { $ticks *= 60*60; } + elsif ($unit eq 'd') { $ticks *= 60*60*24; } + elsif ($unit eq 'w') { $ticks *= 60*60*24*7; } + else { die "Invalid unit '$unit' in '$in'\n" } + return $ticks; +} + my %opts = (t=>30); -getopts('hdt:', \%opts); +getopts('hdt:c:w:', \%opts); usage() unless scalar @ARGV == 1; usage() if $opts{h}; my $zone = $ARGV[0]; @@ -85,8 +98,11 @@ my $zone = $ARGV[0]; my $data; my $start; my $stop; -my $CRIT_DAYS = 3; -my $WARN_DAYS = 7; +my $CRIT = 3 * 3600*24; +my $WARN = 7 * 3600*24; + +$CRIT = convert_time($opts{c}) if defined $opts{c}; +$WARN = convert_time($opts{w}) if defined $opts{w}; my @refs = qw ( a.root-servers.net @@ -195,15 +211,15 @@ sub do_analyze { } } critical("$min_ns has expired RRSIGs") if ($min_exp < $NOW); - if ($min_exp - $NOW < ($CRIT_DAYS*86400)) { + if ($min_exp - $NOW < ($CRIT)) { my $ND = sprintf "%3.1f days", ($min_exp-$NOW)/86400; critical("$min_type RRSIG expires in $ND at $min_ns") } - if ($min_exp - $NOW < ($WARN_DAYS*86400)) { + if ($min_exp - $NOW < ($WARN)) { my $ND = sprintf "%3.1f days", ($min_exp-$NOW)/86400; warning("$min_type RRSIG expires in $ND at $min_ns") } - success("No RRSIGs expiring in the next $WARN_DAYS days"); + success(sprintf("No RRSIGs expiring in the next %3.1f days", $WARN/86400)); } sub sigrr_exp_epoch { -- 2.20.1