[Pkg-nagios-changes] [pkg-nagios-plugins-contrib] 10/18: Updating check_printer.
Bernd Zeimetz
bernd at bzed.de
Wed Oct 1 11:13:16 UTC 2014
This is an automated email from the git hooks/post-receive script.
bzed pushed a commit to branch master
in repository pkg-nagios-plugins-contrib.
commit 5525ee9953646554fcb02a0f7a3f03c197452d2d
Author: Bernd Zeimetz <bernd at bzed.de>
Date: Wed Oct 1 12:26:33 2014 +0200
Updating check_printer.
---
check_printer/check_printer | 174 +++++++++++++++++++++++++++++++++++---------
check_printer/control | 2 +-
2 files changed, 141 insertions(+), 35 deletions(-)
diff --git a/check_printer/check_printer b/check_printer/check_printer
index 3aa8984..60e6846 100644
--- a/check_printer/check_printer
+++ b/check_printer/check_printer
@@ -40,28 +40,34 @@ if ($OS =~ m/^\wBSD/){
use lib "/usr/local/nagios/libexec";
}
-use utils qw(%ERRORS);
use Data::Dumper;
+use Getopt::Long;
+use Pod::Usage;
'$Revision$' =~ m/Revision: (\d+)/;
my $revision = $1;
'$HeadURL$' =~ m/HeadURL: ([\w\:\/\-\.\_]+) /;
my $src_url = $1;
-my $usage = "
-Usage: $0 host_addr community warn% crit%
+my $debug = 0;
+my ($host, $warning, $critical, @ignore);
+my $community = "public";
-This script connects via SNMP to a print and checks printer supply
-levels. This script outputs performance data for all supplies
-found for toner and drum.
-";
+our %getopts;
+Getopt::Long::Configure("bundling");
+GetOptions(
+ "h|host=s" => \$host,
+ "C|community=s" => \$community,
+ "w|warn=i" => \$warning,
+ "c|crit=i" => \$critical,
+ "i=i" => \@ignore,
+ 'V|version' => sub { print '$Id$' ."\n"; exit 0 },
+ "d|debug" => \$debug,
+ "man" => sub { pod2usage(-exitstatus => 0, -verbose => 2); exit 0 }
+) or pod2usage(2);
+
+
+pod2usage(2) unless (defined($host));
-## set to 1 if you want debug output for development
-my $debug = 0;
-if ($ARGV[4]){
- $debug = 1;
- print "check_printer Revision $revision\n$src_url\n\n";
-}
-die $usage unless ($#ARGV >= 3);
my $base_oid = ".1.3.6.1.2.1.43.11.1.1";
my $type_oid = "3.1";
my $name_oid = "6.1";
@@ -71,13 +77,14 @@ my $curr_oid = "9.1";
my $loop;
-my $host = $ARGV[0];
+
my $comm = $ARGV[1];
-my @vars = ("snmpwalk -On -v 1 -c $comm $host $base_oid.$name_oid",
- "snmpwalk -On -v 1 -c $comm $host $base_oid.$uom_oid",
- "snmpwalk -On -v 1 -c $comm $host $base_oid.$max_oid",
- "snmpwalk -On -v 1 -c $comm $host $base_oid.$curr_oid");
+my @vars = ("snmpwalk -On -v 1 -c $community $host $base_oid.$name_oid",
+ "snmpwalk -On -v 1 -c $community $host $base_oid.$uom_oid",
+ "snmpwalk -On -v 1 -c $community $host $base_oid.$max_oid",
+ "snmpwalk -On -v 1 -c $community $host $base_oid.$curr_oid");
+
my(@values, @names, @max, @min);
our %uom = ( "4" => "µm",
@@ -97,7 +104,7 @@ foreach(@vars){
@values = (@values, split /\n/, `$_`);
if ($? != 0){
print "Printer Supplies UNKNOWN";
- exit $ERRORS{'UNKNOWN'};
+ exit 3;
}
}
@@ -105,14 +112,20 @@ if ($debug){
print Dumper(\@values);
}
my %finvalues;
+
+my $ignore = join('|', @ignore);
+
foreach(@values){
# matching the following line
# $1 $2 $3
# .1.3.6.1.2.1.43.11.1.1.6.1.1 = STRING: "Black Cartridge"
- $_ =~ m/^([\.\d]+) = ([\w-]+):[\s\"]+([\(\)\-\d\w\s,\/:]+)\"*$/;
+ $_ =~ m/^([\.\d]+) = ([\w-]+):[\s\"]+([\(\)\-\d\w\s,\/:]+)\"*$/ or next;
my $loid = $1;
my $ltype = $2;
my $string = $3;
+ if ($loid =~ m/\.(${ignore})$/){
+ next;
+ }
if ($ltype =~ m/HEX/i){
# hex string, convert to ascii
$string = join "", map {chr hex $_ } split m/ /, $string;
@@ -183,9 +196,7 @@ my $is_crit = 0;
my $err_str = "";
while (my($key, $value) = each(%status)){
my ($maximum, $current);
- my $critical = $ARGV[3];
- my $warning = $ARGV[2];
- if ($value->{"curr"} == -3){
+ if (!exists($value->{"curr"}) || $value->{"curr"} == -3){
## we can process as yes/no
$current = 100;
## Override the critical/warning, since they're moot
@@ -197,10 +208,8 @@ while (my($key, $value) = each(%status)){
} else {
$maximum = $value->{"max"};
}
- if ($value->{"curr"} == -3){
- ## -3 means printer knows supply exists, but not how much
- $current = 100;
- } elsif ($value->{"curr"} < 0){
+
+ if (!exists($value->{"curr"}) || $value->{"curr"} < 0){
## weird value, set to 0 for math reasons
$current = 0;
} else {
@@ -246,16 +255,17 @@ if ($debug){
print "please send all of the output, including your command line to\n";
print "ecrist\@secure-computing.net with the subject line 'check_printer DEBUG' along\n";
print "with a description of the problem you're experiencing.\n###################################\n";
+ print '$Id$'."\n\n";
}
if ($is_crit){
- print "$err_str CRITICAL. See http://$ARGV[0] | $perf_str";
- exit $ERRORS{'CRITICAL'};
+ print "$err_str CRITICAL. See http://$ARGV[0] | $perf_str\n";
+ exit 2;
} elsif ($is_warn){
- print "$err_str WARNING. See http://$ARGV[0] | $perf_str";
- exit $ERRORS{'WARNING'};
+ print "$err_str WARNING. See http://$ARGV[0] | $perf_str\n";
+ exit 1;
} else {
- print "Printer Supplies OK | $perf_str";
- exit $ERRORS{'OK'};
+ print "Printer Supplies OK | $perf_str\n";
+ exit 0;
}
@@ -267,3 +277,99 @@ sub round {
my($number) = shift;
return int($number + .5 * ($number <=> 0));
}
+
+__END__
+
+=head1 check_printer
+
+check_printer - Gather supply metrics from a printer via SNMP query
+
+=head1 SYNOPSIS
+
+check_printer [options]
+
+Options:
+
+ -h, --host Printer hostname or IP address.
+ -C, --community SNMP community string, defaults to "public"
+ -w, --warn Warning threshold
+ -c, --crit Critical threshold
+ -i, --ignore Supply ignore. See man page for more information (--man)
+ -V, --version Prints version string and exits
+ -d, --debug Prints debug output, useful when reporting a problem to the developer, or getting index numbers for --ignore
+ --man Prints man page
+
+=head1 DESCRIPTION
+
+B<check_printer> is a Perl script that retrieves supply metrics from printers using the snmpwalk command.
+
+=head1 OPTIONS
+
+=over
+
+=item -h, --host
+
+Defines the host or IP address passed to snmpwalk.
+
+=item -C, --community
+
+Identifies the SNMP community string. Requires read access only.
+
+=item -w, --warn
+
+Value at which a warning is generated. For example, if -w 10 is set, when
+supply levels fall to 10% or below, a warning will be sent as part of the
+performance data.
+
+=item -c, --crit
+
+Value at which a critical alert is generated. This number should be lower
+than --warn is set, but this is not enforced.
+
+=item -i, --ignore
+
+Supply index that should be ignore from the output. Multiple values are
+accepted, separately:
+
+=over
+
+check_printer -i 1 -i 2
+
+=back
+
+Will exclude supply indexes 1 and 2. To get the supply index list, run the
+check_printer utility with --debug defined and the top of the output will
+list available supply metrics as follows:
+
+=over
+
+$VAR1 = [
+ '.1.3.6.1.2.1.43.11.1.1.6.1.1 = STRING: "Black Toner"',
+ '.1.3.6.1.2.1.43.11.1.1.6.1.2 = STRING: "Drum Unit"',
+ '.1.3.6.1.2.1.43.11.1.1.7.1.1 = INTEGER: 13',
+ '.1.3.6.1.2.1.43.11.1.1.7.1.2 = INTEGER: 7',
+ '.1.3.6.1.2.1.43.11.1.1.8.1.1 = INTEGER: -2',
+ '.1.3.6.1.2.1.43.11.1.1.8.1.2 = INTEGER: -2',
+ '.1.3.6.1.2.1.43.11.1.1.9.1.1 = INTEGER: -3',
+ '.1.3.6.1.2.1.43.11.1.1.9.1.2 = INTEGER: 0'
+];
+
+=back
+
+In the above example, we are looking for the OID string starting with
+B<.1.3.6.1.2.1.43.11.1.1.6.1> and the index is the last number. To exclude the
+Drum Unit, pass I<-i 2> to check_printer
+
+=item -V, --version
+
+Print the check_printer version string and exits.
+
+=item -d, --debug
+
+Outputs debug information. If you are having problems with a printer or device,
+send the debug output to B<ecrist at secure-computing.net> and identify your printer
+model and manufacturer.
+
+=item --man
+
+Prints this man page. :)
diff --git a/check_printer/control b/check_printer/control
index 10a428c..a344ffb 100644
--- a/check_printer/control
+++ b/check_printer/control
@@ -1,5 +1,5 @@
Homepage: https://www.secure-computing.net/svn/trunk/nagios/
-Watch: https://www.secure-computing.net/svn/trunk/nagios/check_printer SHA1:bdb9254c6bb01d147602eeedc9ed19d0ebe1cef4
+Watch: https://www.secure-computing.net/svn/trunk/nagios/check_printer SHA1:fcf202f7f593ae612138962ed6528fcb2224047a
Uploaders: Bernd Zeimetz <bzed at debian.org>
Description: plugin to check printer supply levels using SNMP
It outputs performance data for all supplies
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-nagios/pkg-nagios-plugins-contrib.git
More information about the Pkg-nagios-changes
mailing list