* now can use as non root (using blkid cache file)
* more detailed output in nagios
--- a/check_dump.pl Tue Apr 19 16:36:02 2011 +0200
+++ b/check_dump.pl Wed Apr 20 14:08:34 2011 +0200
@@ -1,4 +1,4 @@
-#! /usr/bin/perl -w
+#! /usr/bin/perl
# Copyright (C) 2011 Christian Arnold
#
@@ -15,12 +15,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-# Christian Arnold <arnold@schlittermann.de>
+# Christian Arnold <arnold@schlittermann.de>
use 5.010;
-use Perl6::Slurp;
use strict;
use warnings;
+use Perl6::Slurp;
use File::Basename;
use Pod::Usage;
use Getopt::Long;
@@ -48,7 +48,7 @@
);
my $ME = basename $0;
-my $VERSION = "0.1";
+my $VERSION = "0.2";
my $NAME = "DUMP";
my $NOW = time();
@@ -72,33 +72,58 @@
foreach my $devno ( keys %devs ) {
if ( $devs{$devno}{date} ) {
- if ( ( $NOW - $devs{$devno}{date} ) >
- ( $devs{$devno}{dump} * 86400 ) )
+ if ( ( $NOW - str2time( $devs{$devno}{date} ) ) >
+ ( $devs{$devno}{dump} * 86_400 * 2 ) )
+ {
+ $rc{ $devs{$devno}{dev} } = {
+ rc => $ERRORS{CRITICAL},
+ lastdump => "[$devs{$devno}{date}]"
+ };
+ }
+ elsif ( ( $NOW - str2time( $devs{$devno}{date} ) ) >
+ ( $devs{$devno}{dump} * 86_400 ) )
{
- $rc{ $devs{$devno}{dev} } = { rc => $ERRORS{WARNING} };
+ $rc{ $devs{$devno}{dev} } = {
+ rc => $ERRORS{WARNING},
+ lastdump => "[$devs{$devno}{date}]"
+ };
+ }
+ else {
+ $rc{ $devs{$devno}{dev} } = {
+ rc => $ERRORS{OK},
+ lastdump => "[$devs{$devno}{date}]"
+ };
}
}
else {
- $rc{ $devs{$devno}{dev} } = { rc => $ERRORS{CRITICAL} };
+ $rc{ $devs{$devno}{dev} } = {
+ rc => $ERRORS{CRITICAL},
+ lastdump => "[NEVER]"
+ };
}
}
- my ( @critical, @warning );
+ my ( @critical, @warning, @ok );
foreach my $dev ( keys %rc ) {
if ( $rc{$dev}{rc} eq $ERRORS{CRITICAL} ) {
- push @critical, $dev;
+ push @critical, "$dev last dump: $rc{$dev}{lastdump}";
+ next;
+ }
+ elsif ( $rc{$dev}{rc} eq $ERRORS{WARNING} ) {
+ push @warning, "$dev last dump: $rc{$dev}{lastdump}";
+ next;
}
else {
- push @warning, $dev;
+ push @ok, "$dev last dump: $rc{$dev}{lastdump}";
}
}
- say "$NAME CRITICAL: @critical check dump backup" and exit $ERRORS{CRITICAL}
+ say "$NAME CRITICAL: " . join( ', ', @critical ) and exit $ERRORS{CRITICAL}
if (@critical);
- say "$NAME WARNING: @warning check dump backup" and exit $ERRORS{WARNING}
+ say "$NAME WARNING: " . join( ', ', @warning ) and exit $ERRORS{WARNING}
if (@warning);
- say "$NAME OK: all dump backups in limit" and exit $ERRORS{OK};
+ say "$NAME OK: " . join( ', ', @ok ) and exit $ERRORS{OK};
}
sub get_candidates() {
@@ -127,9 +152,9 @@
my %devs = @_;
say "$NAME CRITICAL: Command 'dump' not found." and exit $ERRORS{CRITICAL}
- if system("command -v dump >/dev/null");
+ if system("command -v /sbin/dump >/dev/null");
- foreach (`dump -W`) {
+ foreach (`/sbin/dump -W`) {
chomp;
/^
(?:\s+|>\s+)
@@ -152,7 +177,7 @@
mp => $+{mp},
level => $+{level},
dump => $devs{"$major:$minor"}{dump},
- date => str2time( $+{date} )
+ date => $+{date}
};
}
}
@@ -163,15 +188,26 @@
sub real_device($) {
my $dev = shift;
+ # get the real device
if ( $dev ~~ /^(LABEL|UUID)=/ ) {
- chomp( $dev = `blkid -c /dev/null -o device -t '$dev'` );
+
+ # only root can use blkid without cache
+ if ( not scalar($<) ) {
+ chomp( $dev = `/sbin/blkid -c /dev/null -o device -t '$dev'` );
+ }
+ else {
+ chomp( $dev = `/sbin/blkid -o device -t '$dev'` );
+ }
}
$dev = realpath($dev);
}
sub devno($) {
- my @mm = ( ( stat shift )[6] >> 8, ( stat _ )[6] & 0xff );
+ my $dev = shift;
+
+ # get major and minor number for device
+ my @mm = ( ( stat($dev) )[6] >> 8, ( stat($dev) )[6] & 0xff );
return wantarray ? @mm : "$mm[0]:$mm[1]";
}
@@ -223,11 +259,12 @@
=head1 DESCRIPTION
-This nagios plugin check backup status from dump.
+This nagios plugin check backup status from dump. If run as non B<root>,
+the built-in B<blkid>(8) will get block device attributes from the default cache file I</etc/blkid.tab>.
=head1 VERSION
-This man page is current for version 0.1 of B<check_dump>.
+This man page is current for version 0.2 of B<check_dump>.
=head1 AUTHOR
--- a/debian/changelog Tue Apr 19 16:36:02 2011 +0200
+++ b/debian/changelog Wed Apr 20 14:08:34 2011 +0200
@@ -1,3 +1,10 @@
+nagios-plugin-dump (0.2) stable; urgency=low
+
+ * now can use as non root (using blkid cache file)
+ * more detailed output in nagios
+
+ -- Christian Arnold <arnold@schlittermann.de> Wed, 20 Apr 2011 13:57:53 +0200
+
nagios-plugin-dump (0.1) stable; urgency=low
* Initial release
--- a/debian/control Tue Apr 19 16:36:02 2011 +0200
+++ b/debian/control Wed Apr 20 14:08:34 2011 +0200
@@ -7,6 +7,6 @@
Package: nagios-plugin-dump
Architecture: all
-Depends: ${shlibs:Depends}, ${misc:Depends}, perl-base, perl-doc, libperl6-slurp-perl, libtimedate-perl, dump
+Depends: perl-base, perl-doc, libperl6-slurp-perl, libtimedate-perl, dump
Description: nagios plugin to check backup status from dump
This nagios plugin check backup status from dump.