CUPS 报告“无法写入打印数据:管道损坏”

CUPS 报告“无法写入打印数据:管道损坏”

笔记:类似问题几年前就发过了。然而长答案提供的调试程序并没有帮助。而且上次发布的解决方案非常不直观。所以我又来发了这个问题。

我的打印机是通过 连接的socket://ip.of.printer:9100。打印机型号是 LaserJet P4015n。我的电脑运行的是 Arch Linux。cup 相关模块的版本是:

cups-2.0.4-1-x86_64
cups-filters-1.0.71-1
cups-pk-helper-0.2.5-1
libcups-2.0.4-1
python-pycups-1.9.73-1

我电脑的打印系统以前运行良好。但今天当我尝试打印文档时,打印机没有响应。将所有与 cup 相关的软件包降级到我电脑上的最早版本没有帮助。重新安装打印机驱动程序也无济于事。

调试时,# nc -vz ip.of.printer 9100返回正常连接,

...[ip.of.printer] 9100 (hp-pdl-datastr) open

检查/var/log/cups/error_log,只有相关消息

E [22/Aug/2015:01:15:33 +0800] [Job 35] Unable to write print data: Broken pipe

与打印机相关的结果tcpdump如下(本地主机名是Saturn,我跟踪Saturn.57142它是与的连接HP LaserJet P4015):

00:42:12.748387 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetRequest(28)  25.3.2.1.3.1
00:42:12.753755 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(45)  25.3.2.1.3.1="HP LaserJet P4015"
00:42:12.753904 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetNextRequest(27)  43.12.1.1.4
00:42:12.758850 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(34)  43.12.1.1.4.1.1="black"
00:42:12.758900 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetNextRequest(29)  43.12.1.1.4.1.1
00:42:12.763940 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(30)  43.12.1.1.5.1.1=8
00:42:12.764116 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetRequest(28)  25.3.5.1.2.1
00:42:12.771071 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(29)  25.3.5.1.2.1=00
00:42:12.771123 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetRequest(29)  43.10.2.1.4.1.1
00:42:12.775906 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(32)  43.10.2.1.4.1.1=51928

00:42:12.838656 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetNextRequest(27)  43.11.1.1.9
00:42:12.843572 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(31)  43.11.1.1.9.1.1=9120
00:42:12.843675 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetNextRequest(29)  43.11.1.1.9.1.1
00:42:12.848515 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(32)  43.11.1.1.9.1.2=173092
00:42:12.848630 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetNextRequest(29)  43.11.1.1.9.1.2
00:42:12.854099 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(30)  43.12.1.1.2.1.1=1
00:42:12.854138 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetRequest(28)  25.3.5.1.2.1
00:42:12.861080 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(29)  25.3.5.1.2.1=00


00:42:13.261306 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetNextRequest(27)  43.11.1.1.9
00:42:13.266306 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(31)  43.11.1.1.9.1.1=9120
00:42:13.266332 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetNextRequest(29)  43.11.1.1.9.1.1
00:42:13.271211 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(32)  43.11.1.1.9.1.2=173092
00:42:13.271254 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetNextRequest(29)  43.11.1.1.9.1.2
00:42:13.276577 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(30)  43.12.1.1.2.1.1=1
00:42:13.276675 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetRequest(28)  25.3.5.1.2.1
00:42:13.283540 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(29)  25.3.5.1.2.1=00
00:42:13.283623 IP Saturn.57142 > NPI7B3356.DynIP.ntu.edu.sg.snmp:  GetRequest(29)  43.10.2.1.4.1.1
00:42:13.288444 IP NPI7B3356.DynIP.ntu.edu.sg.snmp > Saturn.57142:  GetResponse(32)  43.10.2.1.4.1.1=51928

关于如何解决这个问题您有什么想法吗?

答案1

有时硬件问题确实只是硬件问题……就我而言,原来是我们学校改变了打印作业的组织方式。他们阻止了直接打印,可能是通过防火墙策略。并通过 SAMBA 协议将所有打印作业重定向到中央服务器。因此,我可以 ping 办公室打印机,但无法向打印机发送任何打印数据。在联系 IT 人员并根据他们的更改重新配置我的计算机后,问题最终得到解决。

如果您遇到了类似的问题,并且无法自己找出问题的根源。您可能应该联系公司/组织的 IT 人员。也许他们只是在没有通知您的情况下更改了一些设置。


感谢@ColeBusby,检查问题是否确实是由公司/组织限制通过端口 9100 直接连接打印机引起的,一种方法是使用

telnet [ip.of.the.printer] 9100

在你的终端中。如果输出是

Trying 172.21.48.223...
Connected to 172.21.48.223.
Escape character is '^]'.

紧接着,连接被外部主机关闭。

那么很明显你成功访问了打印机,但是打印机却拒绝你通过 9100 端口进行访问。当这种情况发生时,请咨询你的 IT 人员,看看是否策略在未经你同意的情况下更改了,以及如何配置以使用新的打印系统。

答案2

我们在新网络安装后出现了上述所有症状。确保端口 9100 已打开并可以通过 telnet 连接后,我们将打印机驱动程序从“HP”更改为“Generic PDF”,管道损坏错误消失,打印成功。

(RHEL 7,打印机是 Ricoh 品牌,HP 配置是预先存在的,并且在之前的网络上可以运行)

相关内容