[netatalk-admins] Printing from Solaris to AppleTalk printers


Subject: [netatalk-admins] Printing from Solaris to AppleTalk printers
From: David S. (davids@fruitfly.BDGP.Berkeley.EDU)
Date: Mon Apr 13 1998 - 15:05:15 EDT


If anyone out there is still having trouble configuring his Solaris system to
use AppleTalk printers, the script below - which I hacked from one in the
'cap60' distribution called 'add_at_printer' - worked for me. I've only tried
it with 'netatalk-971027' and Solaris 2.6, but I bet it'll work for earlier
versions of Solaris.

(I also modified the 'lp2pap.sh' script that came with 'netatalk', changing the
line
        $ATALKHOME/bin/pap "$6"
to
        $ATALKHOME/etc/filters/ofpap < "$6" > /dev/null 2>&1
to get postscript conversion.)

To use the script, edit the 'ATALKHOME' value accordingly, and, as 'root',

        add_at_printer <AppleTalk printer name> <Unix printer name>
        
where "AppleTalk printer name" is the one returned by 'nbplkup', and "Unix
printer name" is whatever you want the printer known by on your Unix box.

The original 'cap60' script was somewhat more elaborate; I cut out what I
thought was the unnecessary stuff. If you'd like to see that original, drop me
a line and I'll send it along.

David Simas
davids@flybane.berkeley.edu

#!/bin/sh

ATALKHOME=/mnt/tools/atalk

ATPRINTER=$1
UXPRINTER=$2

if [ ! -r /etc/lp/filter.table ]; then
        echo "Initializing of default printer filters..."
        for f in `ls /etc/lp/fd | sed 's/.fd$//'`; do
                lpfilter -f $f -F/etc/lp/fd/$f.fd
        done
fi

if lpfilter -f atalk -l > /dev/null 2>&1; then
        echo "AppleTalk printer filter is already defined."
else
        echo "Defining AppleTalk printer filter ..."
        cat > /etc/lp/fd/atalk.fd << EOF

Input types: postscript
Output types: PS
Printer types: AppleTalk
Printers: any
Filter type: slow
Command: /usr/bin/cat
EOF
        lpfilter -f atalk -F /etc/lp/fd/atalk.fd
fi

if [ ! -f /usr/share/lib/terminfo/A/AppleTalk ]; then
        echo "Defining terminfo for AppleTalk printers ..."
        cat > /var/tmp/terminfo << EOF
AppleTalk,
        cols#80, lines#66,
        cpi=null, csnm=^D, lpi=null, scs=^D, slines=^D, u9=^D,
EOF
        tic /var/tmp/terminfo
        rm /var/tmp/terminfo
fi

LOCKSDIR=/var/spool/lp/tmp/AppleTalk
if [ ! -d $LOCKSDIR ]; then
        mkdir -m 0771 $LOCKSDIR
        chown lp $LOCKSDIR
        chgrp lp $LOCKSDIR
fi
PSEUDODEVICE=$LOCKSDIR/$UXPRINTER
touch $PSEUDODEVICE
chown lp $PSEUDODEVICE
chgrp lp $PSEUDODEVICE
chmod 0600 $PSEUDODEVICE

echo "(Re)defining $UXPRINTER ..."
( lpadmin -p $UXPRINTER -D "$UXPRINTER" \
                -T AppleTalk \
                -v $PSEUDODEVICE \
                -I PS \
                -i $ATALKHOME/etc/lp2pap.sh \
                -A none && \
        echo $ATPRINTER > /etc/lp/printers/$UXPRINTER/.paprc
        chown lp /etc/lp/printers/$UXPRINTER/.paprc
        chgrp lp /etc/lp/printers/$UXPRINTER/.paprc
        accept $UXPRINTER && \
        enable $UXPRINTER \
) || exit



This archive was generated by hypermail 2b28 : Sat Dec 18 1999 - 16:32:18 EST