=================================================================== RCS file: /cvs/nagios/check_bioctl/check_bioctl,v retrieving revision 1.18 retrieving revision 1.23 diff -u -r1.18 -r1.23 --- nagios/check_bioctl/check_bioctl 2011/12/27 02:12:38 1.18 +++ nagios/check_bioctl/check_bioctl 2017/02/08 19:00:15 1.23 @@ -1,5 +1,5 @@ #!/usr/bin/perl -T -# $RedRiver: check_bioctl,v 1.15 2009/11/23 22:24:45 andrew Exp $ +# $AFresh1: check_bioctl,v 1.22 2017/02/08 17:34:23 andrew Exp $ ######################################################################## # check_bioctl *** A nagios check for OpenBSD bioctl # @@ -7,6 +7,7 @@ ######################################################################## use strict; use warnings; +use 5.010; local %ENV = (); @@ -29,6 +30,7 @@ my $PROGNAME = 'check_bioctl'; my $BIOCTL = '/sbin/bioctl'; +my @DOAS = ( '/usr/bin/doas', '-n' ); use POSIX; my $PREFIX; @@ -42,7 +44,7 @@ use utils qw($TIMEOUT %ERRORS &support); $SIG{'ALRM'} = sub { - print "ERROR: $PROGNAME timeout\n"; + say "ERROR: $PROGNAME timeout"; exit $ERRORS{'UNKNOWN'}; }; alarm($TIMEOUT); @@ -81,7 +83,7 @@ } if ($opt_V) { - print_revision( $PROGNAME, '$Revision: 1.18 $ ' ); + print_revision(); exit $ERRORS{'OK'}; } @@ -114,27 +116,32 @@ } } if ( $have_results == 0 ) { - print "No results found\n"; + say 'No results found'; } exit $ERRORS{$state}; +sub fail { + my ($message) = @_; + print $message; + exit $ERRORS{'UNKNOWN'}; +} + sub read_bioctl { my ($devices) = @_; my %volumes; foreach my $d ( @{$devices} ) { - open my $bioctl, q{-|}, $BIOCTL, $d - or die "Couldn't open bioctl: $!\n"; + open my $bioctl, q{-|}, @DOAS, $BIOCTL, $d + or fail("Couldn't open bioctl: $!\n"); LINE: while ( my $line = <$bioctl> ) { my ( $i, $item ) = parse_bioctl_line($line); next LINE if !defined $i; $volumes{$d}{$i} = $item; } - ## no critic 'die' close $bioctl - or die $! + or fail( $! ? "Error closing bioctl pipe: $!\n" - : "Exit status $? from bioctl \n"; + : "Exit status $? from bioctl\n" ); } foreach my $d ( keys %volumes ) { @@ -149,39 +156,33 @@ return %volumes; } -{ - my $vid; - my $controller; +sub parse_bioctl_line { + ($_) = @_; + chomp; - sub parse_bioctl_line { - ($_) = @_; - chomp; + my @o = map { s/^\s+|\s+$//g; $_ } split; + return if $o[0] eq 'Volume'; - my @o = map { s/^\s+|\s+$//g; $_ } split; - return if $o[0] eq 'Volume'; + state $vid = ''; + state $controller; - $vid ||= ''; - - my $index = "$vid.$o[0]"; - if ( $o[0] !~ /^\d+$/ ) { - $controller = shift @o; - $vid = $o[0]; - $index = $vid; - } - - return $index, - { - controller => $controller, - volume_id => $vid, - id => shift @o, - status => shift @o, - size => shift @o, - device => shift @o, - name => shift @o, - description => join ' ', - @o, - }; + my $index = "$vid.$o[0]"; + if ( $o[0] !~ /^\d+$/ ) { + $controller = shift @o; + $vid = $o[0]; + $index = $vid; } + + return $index, { + controller => $controller, + volume_id => $vid, + id => shift @o, + status => shift @o, + size => shift @o, + device => shift @o, + name => shift @o, + description => join ' ', @o, + }; } sub check_status { @@ -217,7 +218,7 @@ EOL - print_revision( $PROGNAME, '$Revision: 1.18 $' ); + print_revision(); print $License; @@ -225,10 +226,10 @@ } sub print_revision { - my ( $prog, $rev ) = @_; + my $rev = '$Revision: 1.23 $'; $rev =~ s/^\D+([\d\.]+)\D+$/v$1/xms; - print "$prog $rev\n"; + say "$PROGNAME $rev"; return 1; }