目标\问题

目标\问题

目标\问题

目标是通过克服错误消息来打印 CUPS 测试页:

“无法找到打印机“BrotherPrinter”。”

哪些测试可以确认错误消息的根本原因?是否有类似 ping 的测试可以从 cups 执行,以确认它可以“看到”网络上的打印机?

背景

帖子底部提供的错误消息的屏幕截图

CUPS 安装在 Raspberry Pi 3B+ 上的 Raspbian Buster (OSMC) 上 Raspberry pi 未通过 USB 连接到打印机

安装/设置 CUPS

sudo apt install cups
sudo usermod -a -G lpadmin osmc
sudo cupsctl --remote-any
sudo systemctl restart cups

观察结果

得到测试结果

osmc@osmc:~$getent hosts BrotherPrinter 不返回任何内容

osmc@osmc:~$getent hosts BrotherPrinter.local 返回:

192.168.8.101 BrotherPrinter.local

Brother HL2280DW 配置为 CUPS。 CUPS 退货:

当前连接:lpd://BrotherPrinter/BINARY_P1

BrotherPrinter.local ping 返回良好:

ping BrotherPrinter.local
PING BrotherPrinter.local (192.168.8.101): 56 data bytes
64 bytes from 192.168.8.101: seq=0 ttl=255 time=3.895 ms

在此输入图像描述

答案1

CUPS 表示无法找到“BrotherPrinter”,但该ping命令能够从“BrotherPrinter.local”获得响应。

那么,也许“BrotherPrinter”和“BrotherPrinter.local”被认为是两个不同的东西?


测试1:主机名解析

使用以下两条命令进行测试:

getent hosts BrotherPrinter
getent hosts BrotherPrinter.local

如果您得到不同的答案,则问题出在主机名解析上。

您可以通过将 CUPS 的打印机连接 URL 更改为 来解决此问题lpd://BrotherPrinter.local/BINARY_P1

或者,如果您希望系统上的所有程序都尝试使用 mDNS 解析不带域部分的所有主机名,您可以添加mdns4到.hosts:/etc/nsswitch.conf

getent hosts通过执行与配置的常规程序完全相同的操作来测试主机名解析,这可能涉及也可能不涉及连接 DNS 服务器。类似于nslookup或 的命令dig是专门的 DNS 测试工具,它将显式联系 DNS 服务器。)

.local是保留供 mDNS(多播 DNS)使用的特殊域后缀。如果文件hosts:中的行/etc/nsswitch.conf包含mdns_minimalmdns4_minimal但不包含mdns或,则仅当使用后缀mdns4时,mDNS 才会用于解析主机名。.local不带后缀的名称.local是从常规 DNS 服务器查询的。

如果您询问路由器或互联网服务提供商的常规 DNS 服务器,它很可能会返回权威数据,告诉您.local在全球互联网中绝对不存在这样的域 - 因为.local域名应该被解析在本地网段中使用多播 DNS,而不是联系任何公共 DNS 服务器。


测试 2:lpd:// 连接

如果两个名称都BrotherPrinter解析BrotherPrinter.local为相同的正确 IP 地址(根据您的ping命令为 192.168.8.101),则问题出在其他地方。下一步是测试您选择使用的实际打印协议的连接性。此处,您已使用lpd://类型连接 URL 配置了 CUPS,这意味着 CUPS 将尝试使用 TCP 端口 #515 连接到打印机。

您可以使用任何可以与指定端口建立 TCP 连接的程序对此进行测试,并指示基本 TCP 连接是否已成功建立。像telnet或 netcat ( ) 这样的命令nc经常用于此类测试。

为了消除主机名解析的额外变量,您可以首先使用打印机的 IP 地址进行测试:

telnet 192.168.8.101 515

或者

nc -v 192.168.8.101 515

如果telnet命令报告“已建立连接”或nc显示类似“连接到 192.168.8.101 端口 515 (tcp) 成功!”的信息,则您将知道打印机在连接到 LPD 协议的 TCP 端口时正在响应。这两个命令都会保持与打印机的连接,直到您按Ctrl+C断开连接。

如果命令立即退出并出现类似 的错误消息Connection refused,则打印机不接受 LPD 协议连接。也许它不支持该打印协议,或者打印机配置中已禁用支持。

如果命令挂起一段时间,最后退出并显示Connection timed out错误消息,那么最常见的原因是防火墙阻止了从系统到打印机的 TCP 数据包,或从打印机到系统的 TCP 响应数据包,或两者兼而有之。 。 (防火墙通常不会发送导致连接立即终止并显示Connection refused错误消息的错误响应:它们只是停止数据包并让连接超时。)

相关内容