さて今度は、プリンタ・サーバの構築である。これは、CAP と lpd の組み合わせで、ゾーン内の AppleTalk で繋がっている PostScript プリンタに自由にプリント・ジョブを送るというものである。さら に lpd のリモート機能を使えば、CAP がインストールされていない Unix Box からでも、CAP がインストールされている Linux Box 経由 でプリント・ジョブを PostScript プリンタに送ることができる。ま ず最初に atlooklws というコマンドで特定のゾーン の中で使用できる PostScript プリンタを一覧表示させてみよう。 以下のような出力が得られるはずだ。
# atlooklws "hogehoge zone"
abInit: [ddp: 15.160, 228], [GW: 15.160, 167] starting
Looking for =:LaserWriter@SJ TW 8 ...
1 - ATM Dev IIg:LaserWriter@* [Net: 15.161 Node: 83 Skt:191]
---status: idle
Address confirmed for socket 191
2 - Apple LaserWriter IINTX_J:LaserWriter@* [Net: 15.161 Node:221 Skt:169]
---status: idle
Address confirmed for socket 169
3 - Canon Lasershot B406GII_J:LaserWriter@* [Net: 15.161 Node:202 Skt:128]
---status: idle
Address confirmed for socket 128
4 - Centaur (fonts LWII-NTX):LaserWriter@* [Net: 15.161 Node:153 Skt:234]
---status: idle
Address confirmed for socket 234
5 - Cheque:LaserWriter@* [Net: 15.161 Node:167 Skt:191]
---status: idle
Address confirmed for socket 191
6 - EPSON LP-8200PS2:LaserWriter@* [Net: 15.161 Node:172 Skt:128]
---status: idle |
今度は、特定のプリンタにアクセスして、PostScript インタプリタを 起動させてみよう。それは、tlw というコマンドで行なう。
# tlw "Canon Lasershot B406GII_J:LaserWriter@*" abInit: [ddp: 15.160, 228], [GW: 15.160, 167] starting Starting session with Canon Lasershot B406GII_J:LaserWriter@* %no status status: idle Okay PostScript(r) Version 2013.115 (c) Copyright 1984-1994 Adobe Systems Incorporated. Typefaces (c) Copyright 1981 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. PS> showpage |
次にこのプリンタに何か PS ファイルを送り、プリントしてみる。
# lwpr -p "Canon Lasershot B406GII_J:LaserWriter@*" temp.ps abInit: [ddp: 15.160, 228], [GW: 15.160, 167] starting Status: status: idle status: idle Sending temp.ps |
これで印刷が可能かどうか分かったら、次に lpd と連係して PostScript プリンタに AppleTalk を介してプリント・ジョブを送り、印刷させるた めの設定に入る。まず、/etc ディレクトリに cap.printers というゾーン内の PostScript プリンタ の名前を定義するファイルを以下のようにして作る。
# # /etc/cap.printers # ntxj=Apple LaserWriter IINTX_J:LaserWriter@* canon=Canon Lasershot B406GII_J:LaserWriter@* # ---- End of /etc/cap.printers ---- |
次に printcap を環境に合わせて編集する。
# /etc/printcap
#
# Please don't edit this file directly unless you know what you are doing!
# Be warned that the control-panel printtool requires a very strict format!
# Look at the printcap(5) man page for more info.
#
# This file can be edited with the printtool in the control-panel.
##PRINTTOOL## LOCAL PostScript 300x300 a4 1
lp:\
:sd=/var/spool/lpd/lp:\
:lp=/dev/lp1:\
:sh:\
:mx#0:\
:if=/var/spool/lpd/lp/filter:
## Remote PostScript Canon Laser Shot B-406G II
lp|canon|Canon Lasershot B406GII_J:\
:lp=/dev/canon:\
:sd=/var/spool/lpd/canon:\
:pl#72:pw#85:\
:sf:\
:mx#0:\
:lf=/var/spool/lpd/canon/canon-lpd-errs:\
:af=/var/spool/lpd/canon/canon-lpd-acct:\
:if=/usr/local/cap/canonif:\
:of=/usr/local/cap/papof:
# ---- End of /etc/printcap ---- |
次に特定のプリンタに対するデバイス・ポートを作る。
# touch /dev/canon # chmod 660 /dev/canon |
次は、特定のプリンタに対するスプール・ディレクトリやバナー ・ファイルを作る。
# mkdir /var/spool/lpd # mkdir /var/spool/lpd/canon # touch /var/spool/lpd/canon/.banner # chmod daemon.daemon /var/spool/lpd/canon/.banner |
続いてログ・ファイルの作成である。
# touch /var/spool/lpd/canon/canon-lpd-errs # touch /var/spool/lpd/canon/canon-lpd-acct |
最後に特定のプリンタのためのフィルター・ファイルを以下のように して作る。
#!/bin/sh # canonif - CAP Input filter for Canon Laser Shot B-406G II /usr/local/cap/papif -P canon $* # ---- End of /usr/local/cap/canonif ---- |
プリント・コマンドは、以下の通り:
# lpr -Pcanon hogehoge.ps |
さて次に CAP がインストールされていない Unix Box (hogehoge2)から CAP がインストールされてある Linux Box (hogehoge1)経由でプリント ・ジョブを printcap に登録してあるプリンタに 送るための設定方法について記す。まず CAP がインストールされてある Linux Box の /etc ディレクトリに hosts.lpd というファイルを以下のように作る。
# hosts.lpd hogehoge2 |
さらに CAP がインストールされていない Unix Box の printcap を lpd のリモート機能が使えるように次のように設定する。
# CAP がインストールされていない Unix Box の printcap lp|canon|:lp=:rm=hogehoge1:rp=canon: |
こうすることで、hogehoge2 から次のコマンドで hogehoge1 にプリン ト・ジョブを送ることができる。
# lpr -Pcanon hogehoge.ps |