Sponsored Content
Full Discussion: Lpstat
Operating Systems HP-UX Lpstat Post 302234774 by draco on Wednesday 10th of September 2008 09:42:48 AM
Old 09-10-2008
I put this together a few days ago.
Still dint put it in to use yet.
Because I dont know if the loop wil work out well that I put in the script.

I made this cross platform because we also have some linux systems and some solaris servers and so on..
And you'll never know where your gonna need someting like this.

But the service desk script I made for AIX I will still post after I changed it to english.


Code:
##########################################################
############### 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

# End of Script

 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

lpstat -t

When you do a lpstat -t it displays all your printers and tty values. Where is the file that stores this information in SCO 5.0.5? Thanks in advance Stufine (2 Replies)
Discussion started by: stufine
2 Replies

2. UNIX for Advanced & Expert Users

lpstat

Hi, I have been using Hp so far and I am a new user to Solaris.. well, in HP Unix, if I type 'lpstat' if gives me the list of printers connected to the network and their status.. but in solaris it only gives the details if there is any job on the queue. I just want to know what is the... (3 Replies)
Discussion started by: sskb
3 Replies

3. SCO

non root user can't use lpstat

I don't know if anyone still looks at this forum or not, but here goes. I've got two identical SCO OpenServer 5.0.7 machines, fully patched and updated. On one the non-root user can do lpstat -p and it will display a list of printers and their status, on the other: $ lpstat -p UX:lpstat: ERROR:... (3 Replies)
Discussion started by: checkpro
3 Replies

4. Shell Programming and Scripting

How to compare result lpstat with hostsfile

Hi there all, I got a long list of printers installed and a longer list of printers in my hosts file. In the hosts file I got a even longer list of printers in the hosts file I got the IP adress of all printers next to the printer name. How can I get a script working to get the printers... (0 Replies)
Discussion started by: draco
0 Replies

5. Shell Programming and Scripting

lpstat throughs warning

Hi Guys, I am geting this message ".status: (WARNING): 0781-102 Invalid printer name: xerox".i m reading printer name from a text file.i try to print the value reading from file is correct xerox. if run lpstat -pxerox -l it works fine but when i try to read from file it throughs warining.please... (1 Reply)
Discussion started by: sagii
1 Replies

6. Shell Programming and Scripting

lpstat

Hi, here is lpstat command with queue name. queue name is not valid but lpstat takes my local queue and shows the following results.is there any way that i can stop it after waring message and dont take local print queue. i would like to print a message that queue is not valid but when lpstat... (4 Replies)
Discussion started by: sagii
4 Replies

7. AIX

lpstat issues

Hi, I tried to migrate a server, I installed AIX on a new server and I want to configure the printer queues. I copied all of files from the old server where the printer queues are working fine. I followed these steps: 1. copy the /etc/qconfig (make a copy of the original before) 2. Copy the... (10 Replies)
Discussion started by: imad77
10 Replies

8. Solaris

Need help with lpstat command

Hi lpstat reports me "Failed to contact service for xxxxxx: not-found" lpstat -p test -l printer test unknown state. enabled since Oct 27 12:01 2009. available. Remote Name: XXXXXX Remote Server: sunsrv Failed to contact service for xxxxxx: not-found can someone help... (1 Reply)
Discussion started by: xtreams
1 Replies

9. UNIX for Advanced & Expert Users

lpstat ?

Hi, can somebody tell me what is the difference between `lpstat -s` and `lpstat -v` command. thanks. (3 Replies)
Discussion started by: anandgodse
3 Replies

10. UNIX for Dummies Questions & Answers

Lpstat output in mb?

Hi all, Newbie to the site here and fairly novice to UNIX\LINUX so please bear with me.:) My question is; can the lpstat -t command show the size of the print jobs in mb or gb instead of bytes? They would be much easier to view this way. For more information of what I'm on about; please... (1 Reply)
Discussion started by: Melikins
1 Replies
All times are GMT -4. The time now is 04:15 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy