通过浏览发现的 CUPS 打印机显示为 ///dev/null

通过浏览发现的 CUPS 打印机显示为 ///dev/null

我在同一个子网上有两台服务器,一台是 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?
  • 打印服务器运行的是 Scientific Linux 6.4 和 CUPS 1.4.2
  • 打印客户端运行的是 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 响应。此外,客户端似乎只看到打印服务器通告的类,而不是打印机队列本身。

这就是我真正想知道的。

  • 在同一 LAN 上进行 CUPS 浏览所需的最低配置是什么?
  • 不同版本的 CUPS 之间打印机浏览功能可以正常工作吗?
  • 还有哪些其他故障排除工具可用于解决打印机浏览问题?

[编辑:即使 lpstat -t 表示设备为 ///dev/null,我仍然可以向设备发送打印作业。因此看起来基本打印工作正常,但我仍然想知道为什么它在客户端上显示为 ///dev/null。]

答案1

我遇到的大多数问题都归结于对 CUPS 配置文件的误解。我偶然发现了一个很好的参考资料,叫做如何设置小型服务器 - CUPS 打印服务器(chschneider.eu) 提供了我所寻找的大部分答案。

打印机类有空设备

问:根据客户端上的 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 服务器。

最低配置

问:在同一 LAN 上进行 CUPS 浏览所需的最低配置是什么?

如果 CUPS 客户端模式不能满足您的需求,您需要配置本地 CUPS 服务器,以便它可以发现其他 CUPS 服务器上配置的打印机。有两种方法可以做到这一点。

通过 IPP 进行轮询

如果您只有几个客户端,并且希望更好地控制打印环境,那么这是理想的选择。轮询是 CUPS 不可或缺的一部分,无需特殊指令即可启用它。只需确保以下几点:

  • 每个打印机队列都需要Sharing单独启用。
  • <Location />节必须允许适当的子网和/或用户。
  • 小心可能拒绝访问的自定义策略。

通过 UDP 广播浏览

如果您拥有大量客户端或服务器,并且想让打印服务器使用起来更方便,那么这是理想的选择。如果服务器上启用了浏览功能,它将定期发送 UDP 广播。

Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseAddress @LOCAL

相关内容