# chown daemon.daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo
現(xiàn)在,orchid 上的使用者可以將資料交由rattan 及bamboo 打印 。舉例來說,orchid
上的使用者可以輸入
第49 頁(yè)FreeBSD 使用手冊(cè)
% lpr -P bamboo -d sushi-revIEw.dvi
require ‘sys/socket.ph";
而orchid 上的LPD 系統(tǒng)將會(huì)將工作拷貝到/var/spool/lpd/bamboo spooling 目錄下并
注明它是要打印DVI 的工作 。當(dāng)rose 這臺(tái)機(jī)器上給bamboo 用的spooling 目錄有空間時(shí),
這兩個(gè)LPD 就會(huì)開始溝通將文件傳給rose 。然后這工作便進(jìn)入rose 的隊(duì)列直到它被打出為
止 。而將DVI 轉(zhuǎn)換成PostScript(因?yàn)閎amboo 是PostScript 打印機(jī))的工作將會(huì)在rose 這
臺(tái)機(jī)器上執(zhí)行 。
11.4.3.2 使用網(wǎng)絡(luò)數(shù)據(jù)傳輸接口的打印機(jī)
如果你為你的打印機(jī)安裝了一塊網(wǎng)卡接口,通常有兩種情況:這個(gè)接口具有spooler 的
能力(較貴),或是只是拿來取代串口或并口(較便宜) 。這一節(jié)要討論的是如何使用較便宜的
那種方式 。如果你是選用較貴的接口,請(qǐng)參考前一節(jié):安裝遠(yuǎn)程機(jī)器上的打印機(jī) 。
/etc/printcap 設(shè)置文件里允許你指定使用串口或是并口,以及(如果你使用串行端口)
使用什么傳輸速率、哪一種流量控制、是否需要延長(zhǎng)轉(zhuǎn)換換行字符等等 。但是,卻沒有一種
方法可以指定以TCP/IP 或是其它的網(wǎng)絡(luò)連接端口與打印機(jī)連接 。
如果要將資料送給這種網(wǎng)絡(luò)打印機(jī),你需要一種可以被文字及轉(zhuǎn)換用過濾過程調(diào)用的數(shù)
據(jù)傳輸程序 。這里有一個(gè)例子:netprint 這個(gè)script 可以讀取標(biāo)準(zhǔn)輸入的資料并將這些資料
送到用網(wǎng)絡(luò)連接的打印機(jī) 。我們?cè)趎etprint 命令的第一個(gè)參數(shù)傳入該打印機(jī)的機(jī)器名稱,
并使用第二個(gè)參數(shù)傳送通訊端口的號(hào)碼 。注意,這個(gè)程序只支持單向的傳輸(即從FreeBSD
到打印機(jī)),而很多網(wǎng)絡(luò)打印機(jī)都支持雙向傳輸,而你可能會(huì)想要使用這些功能(如取得打印
機(jī)狀態(tài)、統(tǒng)計(jì)打印情況等) 。
#!/usr/bin/perl
#
# netprint - Text filter for printer attached to network
# Installed in /usr/local/libexec/netprint
#
$#ARGV eq 1 || die “Usage: $0【2 FreeBSD handbook中文版 11 打印 高級(jí)打印機(jī)設(shè)置 B.Header Pages】”;
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
第50 頁(yè)FreeBSD 使用手冊(cè)
($ignore, $ignore, $protocol) = getprotobyname(‘tcp");
($ignore, $ignore, $ignore, $ignore, $address)
= gethostbyname($printer_host);
$sockaddr = pack(‘S n a4 x8", &AF_INET, $printer_port, $address);
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|| die “Can"t create TCP/IP stream socket: $!”;
connect(PRINTER, $sockaddr) || die “Can"t contact $printer_host: $!”;
while () { print PRINTER; }
exit 0;
然后我們可以在不同的過濾程序里使用這個(gè)script 。假設(shè)我們有一臺(tái)連接在網(wǎng)絡(luò)上的
Diablo 750-N 行式打印機(jī) 。這臺(tái)打印機(jī)用通訊端口5100 接收資料 。這臺(tái)打印機(jī)的名字叫做
scrivener 。以下是給這打印機(jī)使用的文字過濾程序:
#!/bin/sh
#
# diablo-if-net - Text filter for Diablo printer ‘scrivener" listening
# on port 5100. Installed in /usr/local/libexec/diablo-if-net
#
exec /usr/libexec/lpr/lpf “$@” | /usr/local/libexec/netprint scrivener 5100
11.4.4 限制打印機(jī)的使用
這一節(jié)討論如何限制打印機(jī)的使用 。LPD 系統(tǒng)可以限制本機(jī)及遠(yuǎn)程使用打印機(jī)的使用
者,設(shè)置它們是否可以打印多份、打印工作大小的限制以及打印機(jī)隊(duì)列的上限 。
11.4.4.1 限制打印多份
LPD 系統(tǒng)讓使用者可以很容易地將一個(gè)文件打印多份 。舉例來說,使用者只要以lpr -#5
命令就可以將這個(gè)工作里的每個(gè)文件都打印5 份 。不論這些文件里是什么東西 。
如果你覺得打印多份會(huì)造成打印機(jī)的損壞,你可以在/etc/printcap 設(shè)置文件里以sc
推薦閱讀
- FreeBSD 4.0 Kernel Hacking Guide--vm/vm_object.c
- NDIS wrapper for FreeBSD 5.2 CURRENT
- 如何壓縮FreeBSD內(nèi)核
- FreeBSD 4.0 Kernel Hacking Guide--i386/i386/machdep.c
- FreeBSD緊急救援狀況的應(yīng)變措施
- freebsd 文件類型表示
- 用 NT loader 來啟動(dòng) FreeBSD
- FreeBSD中用MRTG監(jiān)測(cè)網(wǎng)路流量
- 怎樣編譯FreeBSD內(nèi)核
- FreeBSD 4.0 Kernel Hacking Guide--i386/i386/locore.s
