2 ################################################################################
5 # Description: Script to recreate printer definitions
6 # Author: Andrew@DeFaria.com
7 # Created: Wed Sep 6 16:38:14 PDT 2000
10 # (c) Copyright 2001, Andrew@DeFaria.com, all rights reserved
12 ################################################################################
13 # Set me to command name
17 adm_base=${adm_base:-$HOME/adm}
20 adm_fpath=${adm_fpath:-$adm_base/functions}
26 printer_definitions=${printer_definitions:-$adm_base/etc/printer.defs}
30 accept=/usr/sbin/accept
31 enable=/usr/bin/enable
32 lpadmin=/usr/sbin/lpadmin
33 lpshut=/usr/sbin/lpshut
34 lpsched=/usr/sbin/lpsched
37 if [ "_$1" != "_" ]; then
45 function remove_all_printers {
48 verbose "Removing all printers"
50 # First list all known printers
51 all_printers=$(lpstat -s | grep device | cut -f3 -d' ' | cut -f1 -d:)
53 # Now determine if the printer is local. If it's local then we do not delete
55 for printer in $all_printers; do
56 if [ $(lpstat -v$printer | wc -l) -gt 1 ]; then
57 verbose "Removing $printer"
60 local_printers="$local_printers $printer"
61 verbose "$printer is local to this machine. Will not automatically remove it"
64 verbose "Removed all printers"
66 } # remove_all_printers
68 # Check for execution by root
70 error "This script must be run as root" 1
73 while [ $# -ge 1 ]; do
88 usage "Unrecognized parameter $1"
94 if [ ! -r $printer_definitions ]; then
95 error "Unable to find printer definitions ($printer_definitions)" 2
98 if [ $(uname -r) = "B.11.11" ]; then
99 verbose "Prereleased OS (B.11.11) detected. No processing done"
103 # You must shutdown the spooler before making any changes
104 $lpshut > /dev/null 2>&1
106 if [ $? -ne 0 ]; then
107 error "Unable to stop LP Scheduler!" 3
110 # First remove all printer definitions
114 verbose "Adding all printers"
115 grep -v "^#" $printer_definitions | grep -v "^$" | while read printer server; do
116 is_a_local_printer=false
117 for local_printer in $local_printers; do
118 if [ "$printer" = "$local_printer" ]; then
119 is_a_local_printer=true
124 if [ "$is_a_local_printer" = "false" ]; then
125 verbose "Adding $printer:$server... \c"
126 server=$server.cup.hp.com
136 verbose "accepting... \c"
137 $accept $printer > /dev/null 2>&1
139 verbose "enabling... \c"
140 $enable $printer > /dev/null 2>&1
144 verbose "Skipping local printer $printer..."
148 verbose "Added all printers"
150 # Start up the print spooler
151 verbose "Restarting the print spooler"
152 $lpsched -v > /dev/null 2>&1
154 if [ $? -ne 0 ]; then
155 error "Unable to start LP Scheduler!" 6