#!/bin/sh # # printers: Sun Enterprise Server check - BB external script test # # version 1.0 # version 1.1 - modified for new conditions # version 1.2 - properly uses $CAT instead of cat # version 1.3 - properly uses $MACHINE instead of `uname -n` in bb-hosts check # version 1.4 - properly uses $THIS_HOST instead of $MACHINE due to fqdn using comma in name - thanks Craig Cook # version 1.5 - switched "lpstat -p" to "lpstat -a" to filter rejected printers # # BIG BROTHER / XXXXXXXXXXXXXXXX status # # Written by Paul A. Luzzi # on March 22, 2000 # ######################################## # NOTE # This has been tested with BB 1.2b, 1.4h2, 1.5, 1.5a # # Tested on : # Sun Ultra 60, E220R/420R, E250/450, E3000/3500, E4500 # # Could not make my table code appear as # nice as I normally do with all the # indents, because the spaces were taking # up very precious data area I needed. ######################################## ######################################## # INSTALLATION # step 1 - update the EXT section of the runbb.sh script to include this # ... ######################################## ################################## # CONFIGURE IT HERE ################################## HPNPADMIN=/opt/hpnp/bin/hpnpadmin LPSTAT=/usr/bin/lpstat export HPNPADMIN LPSTAT ################################## # Start of script ################################## if test ! "$BBHOME" then echo "template: BBHOME is not set" exit 1 fi if test ! -d "$BBHOME" then echo "template: BBHOME is invalid" exit 1 fi if test ! "$BBTMP" # GET DEFINITIONS IF NEEDED then echo "template: The BB environment is not set" exit 1 fi ##### ##### Start of custom section added by Paul A. Luzzi ##### ##### ##### Get Status proc - used to get all responses ##### get_status() { ##### ##### Setup any and all variables before beginning. ##### ##### ##### Section written on 03-22-2000 by Paul A. Luzzi ##### for use with Big Brother ##### ##### Purpose is to report back to a central server, all "standard" ##### detailed information about network, disk, volume, cpu, memory ##### which is not reported thru regular "easy" checks. ##### ##### Any problem areas should be highlighted in : ##### bold, italics, and red font. ##### ##### ##### Setup some variables for use later ##### COLOR="green" echo "0" > /tmp/$THIS_HOST.printers.color ##### ##### Printer Information ##### echo "

" echo "========== ($HPNPADMIN -ESs) ==========" echo "
" ##### echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" ##### ##### I used the "cat print.output" line for testing, since my test box ##### doesnt support the hpnpadmin command. Normally, the hpnpadmin ##### command will be called directly. ##### cp /dev/null /tmp/$THIS_HOST.printers.out 2> /dev/null for PRT in `$LPSTAT -a | $GREP accepting | $GREP -v "not accepting" | $AWK '{print $1}' | $GREP -v ftp | $GREP -v kt_files | $SORT ` do echo "\n====================\n" >> /tmp/$THIS_HOST.printers.out echo "Checking : $PRT\n" >> /tmp/$THIS_HOST.printers.out $HPNPADMIN -ESs $PRT >> /tmp/$THIS_HOST.printers.out done $CAT /tmp/$THIS_HOST.printers.out | while read FULL_LINE do ##### ##### Checking : - Printer Name ##### Printer Status : - Printer Status ##### Control Panel : - Panel Display ##### Line State : - Line State ##### Printer State : - Printer State ##### if [ ! -z "$FULL_LINE" ] then echo "$FULL_LINE" | $NAWK -F: ' { { if ( $1 == "====================" ) { print "" } else if ( $1 == "Checking " ) { print "" } else if ( $1 == "Printer Status" ) { print "" } else if ( $1 == "Control Panel " ) { if ( $2 == " PERFORM USER" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TONER LOW ?" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 0 EMPTY" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 1 EMPTY" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 2 EMPTY" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 3 EMPTY" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 4 EMPTY" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 5 EMPTY" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 0 OPEN" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 1 OPEN" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 2 OPEN" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 3 OPEN" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 4 OPEN" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 5 OPEN" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " LOAD TRAY 0" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " LOAD TRAY 1" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " LOAD TRAY 2" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " LOAD TRAY 3" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " LOAD TRAY 4" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " LOAD TRAY 5" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 0 LOAD" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 1 LOAD" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 2 LOAD" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 3 LOAD" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 4 LOAD" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } else if ( $2 == " TRAY 5 LOAD" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } print "" } else if ( $1 == "Line State " ) { if ( $2 == " toner/ink low" ) { system( "echo 1 >> /tmp/$THIS_HOST.printers.color" ) } print "" } else if ( $1 == "Printer State " ) { if ( $2 == " offline or intervention needed" ) { system( "echo 2 >> /tmp/$THIS_HOST.printers.color" ) } print "" print "" } else if ( $1 == "*** Receive NO snmp response!" ) { ##/usr/sbin/ping -s $PTR 64 1 print "" print "" } } } ' fi done ##### ##### Close up the table, and the font tags - we're done. ##### echo "
Printer NamePrinter StatusControl PanelLine StatePrinter State
"$2""$2""$2""$2""$2"
Status N/A
" echo "
" ##### ##### Make sure to export COLOR so that it gets back to "central" ##### if [ -s "/tmp/$THIS_HOST.printers.color" ] then COLOR_NUMBER=` $CAT /tmp/$THIS_HOST.printers.color | $UNIQ | $SORT | $TAIL -1 ` else COLOR_NUMBER=3 fi case "$COLOR_NUMBER" in 2) COLOR="red";; 1) COLOR="yellow" ;; 0) COLOR="green" ;; *) COLOR="clear" ;; esac export COLOR ##### ##### End of get_status proc ##### } ##### ##### Main body ##### touch /tmp/$THIS_HOST.printers $GREP $THIS_HOST $BBHOSTS | $GREP "printers" | while read line do if [ ! -z "$line" ] then ## echo "

" > /tmp/$THIS_HOST.printers ## echo "Status of Printers on $THIS_HOST " >> /tmp/$THIS_HOST.printers ## echo "Captured : `$DATE` " >> /tmp/$THIS_HOST.printers get_status > /tmp/$THIS_HOST.printers $BB $BBDISP "status $THIS_HOST.printers $COLOR `$DATE` `$CAT /tmp/$THIS_HOST.printers` " else COLOR="clear" $BB $BBDISP "status $THIS_HOST.printers $COLOR `$DATE` `$CAT /tmp/$THIS_HOST.printers` " fi done ##### ##### End of custom section added by Paul A. Luzzi ##### ############################################## # end of script ##############################################