diff options
Diffstat (limited to 'plugins-scripts/check_uptime.pl')
| -rwxr-xr-x | plugins-scripts/check_uptime.pl | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/plugins-scripts/check_uptime.pl b/plugins-scripts/check_uptime.pl index 4c9f22da..d73e40e1 100755 --- a/plugins-scripts/check_uptime.pl +++ b/plugins-scripts/check_uptime.pl | |||
| @@ -25,7 +25,7 @@ use POSIX; | |||
| 25 | use strict; | 25 | use strict; |
| 26 | use Getopt::Long; | 26 | use Getopt::Long; |
| 27 | use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c | 27 | use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c |
| 28 | $opt_f $opt_s | 28 | $opt_f $opt_s $opt_d |
| 29 | $lower_warn_threshold $upper_warn_threshold | 29 | $lower_warn_threshold $upper_warn_threshold |
| 30 | $lower_crit_threshold $upper_crit_threshold | 30 | $lower_crit_threshold $upper_crit_threshold |
| 31 | $status $state $msg); | 31 | $status $state $msg); |
| @@ -110,7 +110,7 @@ $pretty_uptime .= sprintf( "%d week%s, ", $weeks, $weeks == 1 ? "" : "s" ) if | |||
| 110 | $pretty_uptime .= sprintf( "%d day%s, ", $days, $days == 1 ? "" : "s" ) if $days; | 110 | $pretty_uptime .= sprintf( "%d day%s, ", $days, $days == 1 ? "" : "s" ) if $days; |
| 111 | $pretty_uptime .= sprintf( "%d hour%s, ", $hours, $hours == 1 ? "" : "s" ) if $hours; | 111 | $pretty_uptime .= sprintf( "%d hour%s, ", $hours, $hours == 1 ? "" : "s" ) if $hours; |
| 112 | $pretty_uptime .= sprintf( "%d minute%s, ", $mins, $mins == 1 ? "" : "s" ) if $mins; | 112 | $pretty_uptime .= sprintf( "%d minute%s, ", $mins, $mins == 1 ? "" : "s" ) if $mins; |
| 113 | # Replace last occurence of comma with "and" | 113 | # Replace last occurrence of comma with "and" |
| 114 | $pretty_uptime =~ s/, $/ and /; | 114 | $pretty_uptime =~ s/, $/ and /; |
| 115 | # Always print the seconds (though it may be 0 seconds) | 115 | # Always print the seconds (though it may be 0 seconds) |
| 116 | $pretty_uptime .= sprintf( "%d second%s", $secs, $secs == 1 ? "" : "s" ); | 116 | $pretty_uptime .= sprintf( "%d second%s", $secs, $secs == 1 ? "" : "s" ); |
| @@ -137,9 +137,20 @@ if ( $uptime_seconds > $upper_crit_threshold ) { | |||
| 137 | $state_str = "OK"; | 137 | $state_str = "OK"; |
| 138 | } | 138 | } |
| 139 | 139 | ||
| 140 | # Prepare uptime value (seconds or days) | ||
| 141 | my $uptime_text = ""; | ||
| 142 | my $uptime_unit = ""; | ||
| 143 | if ( $opt_d ) { | ||
| 144 | $uptime_text = floor($uptime_seconds / 60 / 60 / 24); | ||
| 145 | $uptime_unit = "days"; | ||
| 146 | } else { | ||
| 147 | $uptime_text = $uptime_seconds; | ||
| 148 | $uptime_unit = "seconds"; | ||
| 149 | } | ||
| 150 | |||
| 140 | $msg = "$state_str: "; | 151 | $msg = "$state_str: "; |
| 141 | 152 | ||
| 142 | $msg .= "uptime is $uptime_seconds seconds. "; | 153 | $msg .= "Uptime is $uptime_text $uptime_unit. "; |
| 143 | $msg .= "Exceeds $out_of_bounds_text threshold. " if $out_of_bounds_text; | 154 | $msg .= "Exceeds $out_of_bounds_text threshold. " if $out_of_bounds_text; |
| 144 | $msg .= "Running for $pretty_uptime. " if $opt_f; | 155 | $msg .= "Running for $pretty_uptime. " if $opt_f; |
| 145 | if ( $opt_s ) { | 156 | if ( $opt_s ) { |
| @@ -167,6 +178,7 @@ sub process_arguments(){ | |||
| 167 | "c=s" => \$opt_c, "critical=s" => \$opt_c, # critical if above this number | 178 | "c=s" => \$opt_c, "critical=s" => \$opt_c, # critical if above this number |
| 168 | "f" => \$opt_f, "for" => \$opt_f, # show "running for ..." | 179 | "f" => \$opt_f, "for" => \$opt_f, # show "running for ..." |
| 169 | "s" => \$opt_s, "since" => \$opt_s, # show "running since ..." | 180 | "s" => \$opt_s, "since" => \$opt_s, # show "running since ..." |
| 181 | "d" => \$opt_d, "days" => \$opt_d, # report uptime in days | ||
| 170 | ); | 182 | ); |
| 171 | 183 | ||
| 172 | if ($opt_V) { | 184 | if ($opt_V) { |
| @@ -262,6 +274,7 @@ sub print_help () { | |||
| 262 | print "-c (--critical) = Min. number of uptime to generate critical alert ( w < c )\n"; | 274 | print "-c (--critical) = Min. number of uptime to generate critical alert ( w < c )\n"; |
| 263 | print "-f (--for) = Show uptime in a pretty format (Running for x weeks, x days, ...)\n"; | 275 | print "-f (--for) = Show uptime in a pretty format (Running for x weeks, x days, ...)\n"; |
| 264 | print "-s (--since) = Show last boot in yyyy-mm-dd HH:MM:SS format (output from 'uptime -s')\n"; | 276 | print "-s (--since) = Show last boot in yyyy-mm-dd HH:MM:SS format (output from 'uptime -s')\n"; |
| 277 | print "-d (--days) = Show uptime in days\n"; | ||
| 265 | print "-h (--help)\n"; | 278 | print "-h (--help)\n"; |
| 266 | print "-V (--version)\n"; | 279 | print "-V (--version)\n"; |
| 267 | print "-v (--verbose) = debugging output\n"; | 280 | print "-v (--verbose) = debugging output\n"; |
