[BACK]Return to check_bioctl CVS log [TXT][DIR] Up to [local] / nagios / check_bioctl

Diff for /nagios/check_bioctl/check_bioctl between version 1.15 and 1.22

version 1.15, 2009/11/23 22:24:45 version 1.22, 2017/02/08 17:34:23
Line 1 
Line 1 
 #!/usr/bin/perl -T  #!/usr/bin/perl -T
 # $RedRiver: check_bioctl,v 1.14 2009/11/23 21:58:04 andrew Exp $  # $AFresh1: check_bioctl,v 1.21 2017/02/08 16:31:55 andrew Exp $
 ########################################################################  ########################################################################
 # check_bioctl *** A nagios check for OpenBSD bioctl  # check_bioctl *** A nagios check for OpenBSD bioctl
 #  #
Line 7 
Line 7 
 ########################################################################  ########################################################################
 use strict;  use strict;
 use warnings;  use warnings;
   use 5.010;
   
 local %ENV = ();  local %ENV = ();
   
 my $NAGIOS_OUTPUT = 0;  my $NAGIOS_OUTPUT = 1;
   
 my $License = <<'EOL';  my $License = <<'EOL';
 Copyright (c) 2009 Andrew Fresh <andrew@afresh1.com>  Copyright (c) 2009 Andrew Fresh <andrew@afresh1.com>
Line 29 
Line 30 
   
 my $PROGNAME = 'check_bioctl';  my $PROGNAME = 'check_bioctl';
 my $BIOCTL   = '/sbin/bioctl';  my $BIOCTL   = '/sbin/bioctl';
   my @DOAS     = ( '/usr/bin/doas', '-n' );
   
 use POSIX;  use POSIX;
 my $PREFIX;  my $PREFIX;
Line 42 
Line 44 
 use utils qw($TIMEOUT %ERRORS &support);  use utils qw($TIMEOUT %ERRORS &support);
   
 $SIG{'ALRM'} = sub {  $SIG{'ALRM'} = sub {
     print "ERROR: $PROGNAME timeout\n";      say "ERROR: $PROGNAME timeout";
     exit $ERRORS{'UNKNOWN'};      exit $ERRORS{'UNKNOWN'};
 };  };
 alarm($TIMEOUT);  alarm($TIMEOUT);
Line 81 
Line 83 
 }  }
   
 if ($opt_V) {  if ($opt_V) {
     print_revision( $PROGNAME, '$Revision$ ' );      print_revision();
     exit $ERRORS{'OK'};      exit $ERRORS{'OK'};
 }  }
   
Line 114 
Line 116 
     }      }
 }  }
 if ( $have_results == 0 ) {  if ( $have_results == 0 ) {
     print "No results found\n";      say 'No results found';
 }  }
 exit $ERRORS{$state};  exit $ERRORS{$state};
   
Line 123 
Line 125 
     my %volumes;      my %volumes;
   
     foreach my $d ( @{$devices} ) {      foreach my $d ( @{$devices} ) {
         open my $bioctl, q{-|}, $BIOCTL, $d          open my $bioctl, q{-|}, @DOAS, $BIOCTL, $d
             or die "Couldn't open bioctl: $!\n";              or die "Couldn't open bioctl: $!\n";
     LINE: while ( my $line = <$bioctl> ) {      LINE: while ( my $line = <$bioctl> ) {
             my ( $i, $item ) = parse_bioctl_line($line);              my ( $i, $item ) = parse_bioctl_line($line);
Line 149 
Line 151 
     return %volumes;      return %volumes;
 }  }
   
 {  sub parse_bioctl_line {
     my $vid;      ($_) = @_;
     my $controller;      chomp;
   
     sub parse_bioctl_line {      my @o = map { s/^\s+|\s+$//g; $_ } split;
         my ($line) = @_;      return if $o[0] eq 'Volume';
         chomp $line;  
   
         # Do these by columns cuZ that is the easiest for now      state $vid = '';
         my @o = unpack( "A6 A1 A11 A15 A7 A9 A*", $line );      state $controller;
         return if $o[0] eq 'Volume';  
   
         foreach (@o) {      my $index = "$vid.$o[0]";
             s/^\s+//xms;      if ( $o[0] !~ /^\d+$/ ) {
             s/\s+$//xms;          $controller = shift @o;
         }          $vid        = $o[0];
           $index      = $vid;
         my ( $c, $id, $status, $size, $dev, $details, $name ) = @o;  
         my $index = $id;  
         if ($c) {  
             $vid        = $id;  
             $controller = $c;  
         }  
         else {  
             $index = "$vid.$id";  
         }  
   
         return $index,  
             {  
             controller => $controller,  
             id         => $id,  
             status     => $status,  
             size       => $size,  
             device     => $dev,  
             details    => $details,  
             name       => $name,  
             volume_id  => $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 {  sub check_status {
Line 223 
Line 213 
   
 EOL  EOL
   
     print_revision( $PROGNAME, '$Revision$' );      print_revision();
   
     print $License;      print $License;
   
Line 231 
Line 221 
 }  }
   
 sub print_revision {  sub print_revision {
     my ( $prog, $rev ) = @_;      my $rev = '$Revision$';
     $rev =~ s/^\D+([\d\.]+)\D+$/v$1/xms;      $rev =~ s/^\D+([\d\.]+)\D+$/v$1/xms;
   
     print "$prog $rev\n";      say "$PROGNAME $rev";
   
     return 1;      return 1;
 }  }

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.22

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>