我们有一个CUPS服务器运行在Ubuntu14.04上,配置了大约10台HP打印机。我们将Windows、Linux和Mac客户端完美地打印到服务器上。
完美无缺,直到最近一些Mac升级到了塞拉。现在,如果用户试图通过服务器打印,客户端的行为就像cups一样正常。作业通过服务器进行处理,作业日志显示打印的作业是否正常。然而,打印机什么也没有出来。Mac客户端可以使用AirPrint直接打印到打印机。
我们有一个旧版本的cups,所以我们用最新的cups构建了一个新的16.04服务器,同样的结果。我们可以从9100端口上的打印服务器直接打印到打印机,以便该部分正常工作。
假设问题不在于cups,而在于MacOS 12.12,这是否安全?有人有什么疑难解答吗?
发布于 2017-02-01 17:12:28
MacOS机器使用自己的cups服务器。对于现代HP激光打印机,cups可以生成PostScript输出,但对目标打印机有一些特殊设置。linux机器上的cups服务器解析PostScript输入并使用自己的设置重新生成输出。在linux上,调用filter脚本/usr/lib/cups/filter/ HP来为大多数HP激光打印机生成输出。问题是来自PostScript的MacOS输出,这似乎在linux下的cups中被忽略。使用空文件调用hpps筛选脚本并生成空页。打印机会忽略这一点。我们找到了解决这个问题的两个解决办法:
1)将来自压缩为gzip的MacOS的输出发送到linux服务器。cups服务器解压缩输出并将其输送到hpps过滤器。过滤器将源文件连同他自己的页眉和页脚发送到打印机。如果没有特殊设置(例如横幅),来自过滤器的输出与MacOS输出是完全相同的。若要达到此目的,请添加
?compression=gzip到MacOS cups服务器中的cups URI。调用https://localhost:631您的浏览器(启用终端中的接口,并使用“杯式WebInterface=yes”)。选择“修改打印机”,验证并选择IPP或IPPS打印协议。目标URI包含前一个URI。在上面附加一行,例如:
ipps://<ubuntu-cups-server>/printers/<printername>?compression=gzip保存描述和模型设置并保存。
2)在linux服务器上安装一个与HP打印机具有相同目标URI的原始打印机。但是选择原料作为打印机的制造者和模型。例如,如果您的打印机名为“hp1”,则添加“hp1_raw”作为第二台打印机。在MacOS中,使用原始打印机URI作为目标。
ipps://<ubuntu-cups-server>/printers/hp1_raw风险仍然很小。如果有人在linux上向原始队列发送一个非PostScript文件,打印机将将此文件打印为文本。通过打印一个PDF文件,你可以得到许多润滑纸。
发布于 2017-03-23 14:02:24
来自hpps包的hplip过滤器已损坏。应用修补程序:
--- /usr/lib/cups/filter/hpps.shipped 2017-01-13 17:23:49.000000000 +0100
+++ /usr/lib/cups/filter/hpps 2017-03-23 14:51:09.904355996 +0100
@@ -144,6 +144,9 @@
try:
job_id, username, title, copies, options = args[0:5]
+ if len(args) > 5:
+ input_fd = os.open(args[5], os.O_RDONLY)
+
job_id = int(job_id)
except IndexError:
bug("Invalid command line: invalid arguments.")
@@ -376,7 +379,7 @@
while True:
try:
- data = os.read(0, 4096)
+ data = os.read(input_fd, 4096)
except IOError:
bug('Unable to read from standart input')
sys.exit(CUPS_FILTER_FAILED)https://unix.stackexchange.com/questions/317859
复制相似问题