Hi there all..
I need some help with a script I have.
It's a printing script but what will happen if the printer stays on disabled?
Will it continue in the loop?
How can I change the script so it will only loop like 5 times and if still not working than it send a e-mail with what printer has what problem?
Thanx a million people!
##########################################################
############### DEFINE FUNCTIONS HERE ####################
##########################################################
function AIX_classic_printing
{
for Q in $( enq -AW | tail +3 | grep DOWN | awk '{print $1}')
do
enable $Q
(( $? == 0 )) || echo "\n$Q print queue FAILED to enable.\n"
done
}
##########################################################
function AIX_SYSV_printing
{
LOOP=0 # Loop Counter - To grab three lines at a time
lpc status all | egrep ':|printing|queueing' | while read LINE
do
# Load three unique lines at a time
case $LINE in
*:) Q=$(echo $LINE | cut -d ':' -f1)
;;
printing*)
PSTATUS=$(echo $LINE | awk '{print $3}')
;;
queueing*)
QSTATUS=$(echo $LINE | awk '{print $3}')
;;
esac
# Increment the LOOP counter
(( LOOP = LOOP + 1 ))
if ((LOOP == 3)) # Do we have all three lines of data?
then
# Check printing status
case $PSTATUS in
disabled) lpc start $Q >/dev/null
(($? == 0)) && echo "\n$Q printing re-started\n"
;;
enabled|*) : # No-Op - Do Nothing
;;
esac
# Check queuing status
case $QSTATUS in
disabled) lpc enable $Q >/dev/null
(($? == 0)) && echo "\n$Q queueing re-enabled\n"
;;
enabled|*) : # No-Op - Do Nothing
;;
esac
LOOP=0 # Reset the loop counter to zero
fi
done
}
##########################################################
function CUPS_printing
{
LOOP=0 # Loop Counter - To grab three lines at a time
lpc status all | egrep .:|printing|queuing. | while read LINE
do
# Load three unique lines at a time
case $LINE in
*:) Q=$(echo $LINE | cut -d .:. -f1)
;;
printing*)
PSTATUS=$(echo $LINE | awk .{print $3}.)
;;
queuing*)
QSTATUS=$(echo $LINE | awk .{print $3}.)
;;
esac
# Increment the LOOP counter
(( LOOP = LOOP + 1 ))
if ((LOOP == 3)) # Do we have all three lines of data?
then
# Check printing status
case $PSTATUS in
disabled) cupsenable $Q >/dev/null
(($? == 0)) && echo -e "\n$Q printing re-started\n"
sleep 1
;;
enabled|*) : # No-Op - Do Nothing
;;
esac
# Check queuing status
case $QSTATUS in
disabled) accept $Q # >/dev/null
(($? == 0)) && echo -e "\n$Q queueing re-enabled\n"
;;
enabled|*) : # No-Op - Do Nothing
;;
esac
LOOP=0 # Reset the loop counter to zero
fi
done
}
#######################################################
function HP_UX_printing
{
lpstat | grep Warning: | while read LINE
do
if (echo $LINE | grep 'is down') > /dev/null
then
enable $(echo $LINE | awk '{print $3}')
fi
if (echo $LINE | grep 'queue is turned off') >/dev/null
then
accept $(echo $LINE | awk '{print $3}')
fi
done
}
################################################################33
function Linux_printing
{
lpc status | tail +2 | while read pqstat[1] pqstat[2] pqstat[3] junk
do
# First check the status of printing for each printer
case ${pqstat[2]} in
disabled)
# Printing is disable - print status and restart printing
echo "${pqstat[1]} Printing is ${pqstat[2]}"
lpc start ${pqstat[1]}
(($? == 0)) && echo "${pqstat[1]} Printing Restarted"
;;
enabled|*) : # No-Op - Do Nothing
;;
esac
# Next check the status of queueing for each printer
case ${pqstat[3]} in
disabled)
echo "${pqstat[1]} Queueing is ${pqstat[3]}"
lpc enable ${pqstat[1]}
(($? == 0)) && echo "${pqstat[1]} Printing Restarted"
;;
enabled|*) : # No-Op - Do Nothing
;;
esac
done
}
######################################################
############### BEGINNING OF MAIN ####################
######################################################
# Is CUPS Running? If CUPS is running we can just
# run the CUPS standard commands.
ps auxw | grep -q [c]upsd
if (( $? == 0 ))
then
CUPS_printing
exit $?
fi
# What OS are we running?
# To start with we need to know the UNIX flavor.
# This case statement runs the uname command to
# determine the OS name. Different functions are
# used for each OS to restart printing and queuing.
case $(uname) in
AIX) # AIX okay...Which printer subsystem?
# Starting with AIX 5L we support System V printing also!
# Check for an active qdaemon using the SRC lssrc command
if (ps -ef | grep '/usr/sbin/qdaemon' | grep -v grep) >/dev/null 2>&1
then
# Standard AIX printer subsystem found
AIX_PSS=CLASSIC
elif (ps -ef | grep '/usr/lib/lp/lpsched' | grep -v grep)
then
# AIX System V printer service is running
AIX_PSS=SYSTEMV
fi
# Call the correct function for Classic AIX or SysV printing
case $AIX_PSS in
CLASSIC) # Call the classic AIX printing function
AIX_classic_printing
;;
SYSTEMV) # Call the AIX SysV printing function
AIX_SYSV_printing
;;
esac
;;
HP-UX) # Call the HP-UX printing function
HP_UX_printing
;;
Linux) # Call the Linux printing function
Linux_printing
;;
*) # Anything else is unsupported.
echo "\nERROR: Unsupported Operating System: $(uname)\n"
echo "\n\t\t...EXITING...\n"
;;
esac
# End of Script