lp/lpr interface
Andrew Beattie
andrew at riddle.UUCP
Mon Jun 20 18:07:57 AEST 1988
In article <16162 at brl-adm.ARPA> drl%backup at uunet.uu.net (David R. Linn) writes:
>Before I reinvent the wheel, can anyone provide pointers on interfacing
>lpr- and lp-based spooling? I have a network with both SUNOS/BSD machines
>and HP-UX/SYSV machines and would like to be able to print from any machine
>to any printer;
This is the script that I use to set up the printers here.
It goes round all our computers and sets up all the spoolers so that anyone
can print on any printer from anywhere (good eh?)
Some notes:
This copy has had some site specific stuff hacked out of it (our interface
scripts are actualy split into several parts and need special handling) and
so has't been tested in exactly this form.
The directory that the script is run from should contain the printer interface
models. (in our case these are called draft and laser)
In order to cope with different printer speeds, the interfaces should contain
SPEED=set_this_at_installation
stty $SPEED ........etc
I havn't got shar to hand so convert this to a shell script simply by removing
the X at the begining of each line and cutting at the CUT HERE line
To configure for your network, you will need to change the value of ALLMACHINES
to all the sysV machines on your net and the table at the top of the script to
indicate which printers are on which machine.
I have not included the draft and laser interface script, but I have included
the network transfer script. This script must also be in the same directory
and named tcp.
We have only one BSD machine and I interface it by having a script called *lp*
which does:
su guest_account -c "remsh sys_V_server_machine lp $*"
Script starts here:
---------------------------------------------------------------------------
X# ALL MACHINES NOT TO INCLUDE BSD MACHINES
XALLMACHINES="amachine bmachine cmachine dmachine emachine fmachine"
Xtmpconf=/tmp/prconf$$
Xcat >$tmpconf <<!
X1printer amachine tty1a laser 4800
X2printer bmachine tty8d laser 9600
X3printer cmachine tty15 draft
X4printer dmachine tty8b draft
X5printer emachine tty8c laser 9600
X6printer fmachine tty43 laser 19200
X7printer gmachine tty9f laser 9600
X!
X
Xfor target in $ALLMACHINES
Xdo
X echo purging spooler on ${target}
X remsh ${target} /usr/lib/lpshut
X remsh ${target} lpstat -o "|" cut "-d\ " -f1 "|" sed 's/\^/cancel\ /' \
X">" /tmp/clearup$$
X for printer in `remsh ${target} lpstat -a |cut "-d " -f1`
X do
X # remsh ${target} /usr/lib/lpadmin -x${printer}
X remsh ${target} rm -rf /usr/spool/lp/interface/${printer} \
X/usr/spool/lp/member/${printer} /usr/spool/lp/request/${printer}
X done
X remsh ${target} cat /dev/null ">" default
X remsh ${target} cat /dev/null ">" pstatus
X remsh ${target} cat /dev/null ">" log
X remsh ${target} cat /dev/null ">" qstatus
X remsh ${target} cat /dev/null ">" seqfile
X remsh ${target} cat /dev/null ">" outputq
X
X for printer in `cut -f1 $tmpconf`
X do
X echo creating the printer ${printer} on ${target}
X set -- `grep "^$printer " $tmpconf`
X remsh $target chmod 600 /dev/$3
X remsh $target chown lp /dev/$3
X model=$4
X if [ $2 != $target ]
X then
X sed "s/^SERVER=.*/SERVER=$2/" <tcp >/tmp/tcp$$
X rcp /tmp/tcp$$ ${target}:/usr/spool/lp/model/temp
X remsh ${target} /usr/lib/lpadmin -p$printer \
X-v/dev/null -mtemp
X else
X rcp $model ${target}:/usr/spool/lp/model/temp
X remsh ${target} /usr/lib/lpadmin -p$printer \
X-v/dev/$3 -mtemp
X fi
X remsh ${target} enable ${printer}
X remsh ${target} /usr/lib/accept ${printer}
X done
X # remsh ${target} /usr/lib/lpsched "<" /dev/null
Xdone
X ----------- CUT HERE ---------------
X# this script is called tcp
XERR="lp remote print spooler failure: contact administrator"
XSERVER=support # Name of target machine
X
XPRINTER=`basename $0`
XBANNER="${3:-$2}"
XCOPIES=$4
Xfor I in $5
Xdo
X OPTIONS="$OPTIONS -o$I"
Xdone
Xshift; shift; shift; shift; shift
Xfor I
Xdo
X if echo $I | grep "/usr/spool/lp" > /dev/null 2>&1
X then
X chmod a+r $I
X while :
X do
X # this should use rcp ... but never mind
X if cat $I | remsh ${SERVER} lp -d$PRINTER \
X"-t$BANNER" "-n$COPIES" "$OPTIONS" -
X then
X exit 0
X else
X sleep 60
X fi
X done
X
X
X
X fi
Xdone
Andrew Beattie
Sphinx, 43-53 Moorbrige Road, Maidenhead, England
mcvax!ukc!reading!riddle!andrew
andrew at sphinx.co.uk
+44 628 75343
#include <disclaimer.h>
More information about the Comp.unix.wizards
mailing list