我在同一个子网上有两台服务器,一台 CUPS 服务器和一台需要访问 CUPS 服务器上配置的打印机。CUPS 浏览似乎部分工作,但根据客户端上的 lpstat,设备///dev/null
而不是ipp
设备。
[username@clienthost ~]$ lpstat -t
scheduler is running
no system default destination
device for boardroom: ipp://oldprintserver.my.network:631/printers/boardroom
device for br: ipp://oldprintserver.my.network:631/printers/br
device for its: ///dev/null <------ THIS IS BAD?
- 打印服务器正在运行带有 CUPS 1.4.2 的 Scientific Linux 6.4
- 打印客户端运行 CentOS 5.8 和 CUPS 1.3.7
服务器配置 - cupsd.conf
Browsing On
BrowseRemoteProtocols
BrowseAddress @LOCAL
BrowseLocalProtocols CUPS dnssd
客户端配置 - cupsd.conf
Browsing On
BrowseOrder allow,deny
BrowseAllow @LOCAL
BrowsePoll therealprintservername.my.network
BrowseInterval 30
使用tcpdump 分析主机之间的数据包,很明显客户端正在通过IPP 轮询服务器。服务器响应 200 OK。此外,客户端似乎只看到打印服务器公布的类,而不是打印机自己排队。
所以这就是我真正想知道的。
- CUPS 浏览器在同一 LAN 上工作所需的最低配置是什么?
- 不同版本的 CUPS 之间是否可以进行打印机浏览?
- 还有哪些其他故障排除工具可用于解决打印机浏览问题?
[编辑:即使 lpstat -t 说设备是 ///dev/null,我仍然可以将打印作业发送到设备。所以它看起来像基本的打印工作,但我仍然想知道为什么它在客户端上显示为 ///dev/null。]
我的大部分问题归结为误解了 CUPS 配置文件。我遇到了一个很好的参考资料,叫做HOWTO setup a small server - CUPS Print Server (chschneider.eu),它提供了我正在寻找的大部分答案。
打印机类有空设备
Q:根据客户端的lpstat,设备是///dev/null而不是ipp设备。
打印机类从不与特定设备或端口相关联。相反,它们包含其他打印机作为成员。无论您是在 CUPS 服务器还是客户端上运行 lpstat,打印机类总是将 ///dev/null 作为目标设备。这是预期的行为。
在没有本地服务器的情况下使用 CUPS 客户端
如果您希望所有打印任务都由一台CUPS 打印服务器处理,则根本不需要配置本地 CUPS 服务器。只需将以下行添加到
/etc/cups/client.conf
.ServerName my_cups_server.my.network
在客户端模式下,所有常规打印命令(如
lpstat
和)lpr
将直接发送到远程 CUPS 服务器。如果 client.conf 为空,打印命令将查找本地 CUPS 服务器。最低配置
问:CUPS 浏览器在同一局域网内工作的最低配置是什么?
如果 CUPS 客户端模式不能满足您的需求,您将需要配置本地 CUPS 服务器,以便它可以发现在其他 CUPS 服务器上配置的打印机。有两种方法可以做到这一点。
通过 IPP 轮询
如果您只有几个客户,并且希望更好地控制打印环境,那么这是理想的选择。轮询是 CUPS 不可或缺的一部分,不需要特殊指令即可启用它。只需确保以下几点:
Sharing
单独启用。<Location />
节必须允许适当的子网和/或用户。通过 UDP 广播浏览
如果您有很多客户端或服务器,并且想要轻松使用您的打印服务器,这是理想的选择。如果在服务器上启用了浏览,它将定期发送 UDP 广播。