2 FreeBSD handbook中文版 11 打印 高级打印机设置 B.Header( 五 )


:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:;
然后,我们只要在orchid;建立spooling;目录:;
#;mkdir;-p;/var/spool/lpd/rattan;/var/spool/lpd/bamboo;
#;chmod;770;/var/spool/lpd/rattan;/var/spool/lpd/bamboo;
#;chown;daemon.daemon;/var/spool/lpd/rattan;/var/spool/lpd/bamboo;
现在,orchid;上的使用者可以将资料交由rattan;及bamboo;打印 。举例来说,orchid;
上的使用者可以输入
第49;页FreeBSD;使用手册
%;lpr;-P;bamboo;-d;sushi-review.dvi;
require;‘sys/socket.ph’
而orchid;上的LPD;系统将会将工作拷贝到/var/spool/lpd/bamboo;spooling;目录下并
注明它是要打印DVI;的工作 。当rose;这台机器上给bamboo;用的spooling;目录有空间时,;
这两个LPD;就会开始沟通将文件传给rose 。然后这工作便进入rose;的队列直到它被打出为
止 。而将DVI;转换成PostScript(因为bamboo;是PostScript;打印机)的工作将会在rose;这
台机器上执行 。
11.4.3.2;使用网络数据传输接口的打印机
如果你为你的打印机安装了一块网卡接口,通常有两种情况:这个接口具有spooler;的
能力(较贵),或是只是拿来取代串口或并口(较便宜) 。这一节要讨论的是如何使用较便宜的
那种方式 。如果你是选用较贵的接口,请参考前一节:安装远程机器上的打印机 。
/etc/printcap;设置文件里允许你指定使用串口或是并口,以及(如果你使用串行端口);
使用什么传输速率、哪一种流量控制、是否需要延长转换换行字符等等 。但是,却没有一种
方法可以指定以TCP/IP;或是其它的网络连接端口与打印机连接 。
如果要将资料送给这种网络打印机,你需要一种可以被文字及转换用过滤过程调用的数
据传输程序 。这里有一个例子:netprint;这个script;可以读取标准输入的资料并将这些资料
送到用网络连接的打印机 。我们在netprint;命令的第一个参数传入该打印机的机器名称,;
并使用第二个参数传送通讯端口的号码 。注意,这个程序只支持单向的传输(即从FreeBSD;
到打印机),而很多网络打印机都支持双向传输,而你可能会想要使用这些功能(如取得打印
机状态、统计打印情况等) 。
#!/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 打印 高级打印机设置 B.Header】
$printer_host;=;$ARGV[0]
$printer_port;=;$ARGV[1]
第50;页FreeBSD;使用手册
($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
然后我们可以在不同的过滤程序里使用这个script 。假设我们有一台连接在网络上的
Diablo;750-N;行式打印机 。这台打印机用通讯端口5100;接收资料 。这台打印机的名字叫做
scrivener 。以下是给这打印机使用的文字过滤程序:;
#!/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;限制打印机的使用
这一节讨论如何限制打印机的使用 。LPD;系统可以限制本机及远程使用打印机的使用
者,设置它们是否可以打印多份、打印工作大小的限制以及打印机队列的上限 。
11.4.4.1;限制打印多份
LPD;系统让使用者可以很容易地将一个文件打印多份 。举例来说,使用者只要以lpr;-#5;

推荐阅读