diff options
author | Peter Palfrader <peter@palfrader.org> | 2006-10-04 13:30:09 +0000 |
---|---|---|
committer | weasel <weasel@bc3d92e2-beff-0310-a7cd-cc87d7ac0ede> | 2006-10-04 13:30:09 +0000 |
commit | 4ecfe600bea338815bb6a6e4b992f32bd010964b (patch) | |
tree | e561060d74577edb29696486078ea13daa05000e | |
parent | e6eb4bbaff0bb31128372674484691810636cc87 (diff) |
Add nagios-check-printer-status
git-svn-id: svn+ssh://asteria.noreply.org/svn/weaselutils/trunk@188 bc3d92e2-beff-0310-a7cd-cc87d7ac0ede
-rwxr-xr-x | nagios-check-printer-status | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/nagios-check-printer-status b/nagios-check-printer-status new file mode 100755 index 0000000..768eac0 --- /dev/null +++ b/nagios-check-printer-status @@ -0,0 +1,69 @@ +#!/usr/bin/perl + +# really quick and dirty + +# my %ERRORS = ( OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => -1 ); + +use English; +use strict; + +my %CODE = ( + 'UNDEF' => -1, + 'OK' => 0, + 'WARNING' => 1, + 'CRITICAL' => 2, + 'UNKNOWN' => 3 +); + +sub usage($$) { + my ($fh, $exit) = @_; + print $fh "Usage: $PROGRAM_NAME -H <host> -p <printer>\n"; + exit $exit; +} + +my $host; +my $printer; + +while (@ARGV) { + my $a = shift @ARGV; + + if ($a eq '-h') { + usage(*STDOUT,0); + }; + if ($a eq '-H') { + usage(*STDERR,1) unless @ARGV; + $host = shift; + next; + }; + if ($a eq '-p') { + usage(*STDERR,1) unless @ARGV; + $printer = shift; + next; + }; + + usage(*STDERR,1); +} +usage(*STDERR,1) unless $host; +usage(*STDERR,1) unless $printer; +if ($host =~ /[^A-Za-z0-9-.]/) { + die "Evil chars in hostname '$host'\n"; +} +if ($printer =~ /[^A-Za-z0-9-.]/) { + die "Evil chars in printername '$printer'\n"; +} + +my $exit = 'OK'; +my @msg; + +open(LP, "/usr/bin/lpstat -h $host -p $printer |") or die ("Cannot exec/open lpstat: $!\n"); +while (<LP>) { + chomp; + if (/disabled/) { + $exit = 'CRITICAL'; + } + push @msg, $_; +}; +close (LP); + +print "$exit: ".(join "; ", @msg)."\n"; +exit $exit; |