| [SOLVED] Need help combining two ksh scripts I have two scripts on a production solaris box to check and clear the print queue. I want to combine these to make my job a lot easier. I always script in python, but this machine doesn't have it and I don't have rights to install it. Any help on putting these two together will be greatly appreciated!!!
Script 1 (checks queue):
#!/bin/ksh
#
PATH=/usr/bin:$PATH; export PATH
#
#
TB_TITLE () {
clear
echo " "
echo "\t\t\t\t\t Thomas & Betts"
echo " "
echo "\t\t\t\t\tPrint Queue Depth Monitor"
echo "\t\t\t\t\t `hostname`"
echo " "; }
#
TB_CHOICE_ACT () {
echo " "
echo "\t\t\t\tPlease choose from the following-:"
echo " "
echo "\t\t\t\t1) Check Print Queue Current Jobs."
echo "\t\t\t\t2) Exit the Monitor System."
echo " "
read CHOICE_ACT?" Enter 1 or 2 (default is 2)- "
echo " "
if [ ! $CHOICE_ACT ]
then
CHOICE_ACT=2
fi
}
#
TB_CHOICE_QUEUE () {
echo " "
echo "\t\t\t\tName of the queue you would like to check."
echo " "
read CHOICE_QUEUE?" Enter Queue (default is all queu
es)- "
echo " "
}
#
#
TB_TITLE
TB_CHOICE_ACT
#
while [ $CHOICE_ACT -ne 2 ]
do
#
TB_TITLE
TB_CHOICE_QUEUE
#
x=1;
export x
#
CHOICE_EXIST=`grep "$CHOICE_QUEUE:" /etc/printers.conf | wc -l`;
export CHOICE_EXIST
#
clear
#
if [ $CHOICE_EXIST -gt 0 ]
then
#
echo " "
echo "Current Print Queue Jobs for the $CHOICE_Q
UEUE queue at `date`"
sleep 2
echo " "
echo "Please wait ..."
echo " "
sleep 2
PRINT_JOBS=`lpstat -o $CHOICE_QUEUE | wc -l`
export PRINT_JOBS
if [ $PRINT_JOBS -gt 0 ]
then
lpstat -o $CHOICE_QUEUE
else
echo " "
echo "No print jobs queued on $C
HOICE_QUEUE."
echo " "
sleep 10
fi
#
echo " "
#
sleep 10
#
TB_TITLE
TB_CHOICE_ACT
else
TB_TITLE
echo " "
echo "\t\t\t\tPrinter Queue choice does not exis
t."
sleep 10
fi
done
echo " "
Script 2 (Clears Queue):
#!/bin/ksh
#
###########
#
underon=`tput smul`
underoff=`tput rmul`
alloff=`tput sgr0`
bold=`tput smso`
blinkon=`tput blink`
revon=`tput rev`
#
#########
#
TB_TITLE () {
echo " "
echo "\t\t${underon}Thomas & Betts${alloff}"
echo " "
echo "\t\tPrint Queue Clearing Facility"
#
echo " "
echo " "
echo "This will ask for a print queue name and clear all jobs from that queue."
echo " "
#
sleep 0;}
#
CHOOSE_QUEUE () {
#
PRNQUEUE=zzz.foo.zzz; export P
RNQUEUE
#
while [ $PRNQUEUE != "exit" ] && [ `grep $PRNQUEUE /etc/printers.conf | wc -l` -
lt 1 ]
do
clear
TB_TITLE
echo "Please enter the printer queue name. This will repeat unti
l a VALID"
echo "PRINTER QUEUE is given. To quit the facility, please type
${bold}exit${alloff}"
sleep 1
echo " "
read PRNCHOICE?" Queue Name- "
echo " "
if [ $PRNCHOICE = "exit" ]
then
echo "\t\t\tYou have chosen to exit the facility
"
echo " "
sleep 1
exit
fi
if [ `grep $PRNCHOICE /etc/printers.conf | wc -l` -gt 0 ]
then
echo "You have chosen $PRNCHOICE. Proceeding to
clear the $PRNCHOICE print queue."
PRNQUEUE=$PRNCHOICE; export P
RNQUEUE
fi
done
#
echo " "
echo " "
#
sleep 0;}
#
##########
#
CHOOSE_QUEUE
#
sleep 4
echo "\tStarting queue clearing at `date`."
echo " "
lpstat -o $PRNQUEUE | sed 's/ */ /g' 2>/dev/null | grep -v Printer | grep -v lp
d | cut -d " " -f 1 | xargs cancel 2>/dev/null
#
sleep 4
cd /var/spool/print
#
if [ -a $PWD/xf* ]
then
if [ `grep $PRNQUEUE xf* | wc -l` -gt 0 ]
then
sleep 4
for i in `grep $PRNQUEUE xf*`
do
FILES_TO_DEL=`echo $i | cut -d "
:" -f 1 | cut -c 3-`
rm *${FILES_TO_DEL} 2>/dev/null
done
#
lpstat -o | sed 's/ */ /g' | grep -v Printer |
grep -v lpd | grep $PRNQUEUE | cut -d " " -f 1 | xargs cancel 2>/dev/null
fi
fi
#
echo " "
echo "Queue cleared at `date`."
echo " "
echo "This script may need to be run again to catch jobs that may"
echo "have started while this script was running."
sleep 4
#
######### |