#!/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 -p \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 () { chomp; if (/disabled/) { $exit = 'CRITICAL'; } push @msg, $_; }; close (LP); print "$exit: ".(join "; ", @msg)."\n"; exit $CODE{$exit};