338 lines
8.7 KiB
Bash
Executable File
338 lines
8.7 KiB
Bash
Executable File
#!/bin/ksh
|
|
#
|
|
# SCRIPT: PQ_all_in_one.ksh
|
|
#
|
|
# AUTHOR: Randy Michael
|
|
# DATE: 08/14/2007
|
|
# REV: 2.1.P
|
|
#
|
|
# PLATFORM/SYSTEMS: AIX, CUPS, HP-UX, Linux, OpenBSD, and Solaris
|
|
#
|
|
# PURPOSE: This script is used to enable printing and queuing on
|
|
# AIX, CUPS, HP-UX, Linux, OpenBDS, and Solaris
|
|
#
|
|
# REV LIST:
|
|
#
|
|
# set -x # Uncomment to debug this script
|
|
# set -n # Uncomment to check syntax without any execution
|
|
#
|
|
###################################################
|
|
# 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
|
|
}
|
|
|
|
###############################################################
|
|
|
|
function OpenBSD_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 queuing status
|
|
case $QSTATUS in
|
|
disabled) lpc enable $Q >/dev/null
|
|
(($? == 0)) && echo "\n$Q queueing re-enabled\n"
|
|
sleep 1
|
|
;;
|
|
enabled|*) : # No-Op - Do Nothing
|
|
;;
|
|
esac
|
|
|
|
# Check printing status
|
|
case $PSTATUS in
|
|
disabled) lpc up $Q >/dev/null
|
|
(($? == 0)) && echo "\n$Q printing re-started\n"
|
|
;;
|
|
enabled|*) : # No-Op - Do Nothing
|
|
;;
|
|
esac
|
|
LOOP=0 # Reset the loop counter to zero
|
|
fi
|
|
done
|
|
}
|
|
|
|
#######################################################
|
|
|
|
function Solaris_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
|
|
}
|
|
|
|
######################################################
|
|
############### 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
|
|
|
|
;;
|
|
OpenBSD) # Call the OpenBSD printing function
|
|
OpenBSD_printing
|
|
;;
|
|
SunOS) # Call the Soloris printing function
|
|
Solaris_printing
|
|
|
|
;;
|
|
*) # Anything else is unsupported.
|
|
echo "\nERROR: Unsupported Operating System: $(uname)\n"
|
|
echo "\n\t\t...EXITING...\n"
|
|
;;
|
|
esac
|