[原]cups的windows-ext client-error-bad-request 故障

   关于cups 1.1.x的配置,请见:用好Linux下的CUPS打印机服务
   今天在使用Asianux 3.0配置cups的时候,发现其版本从Asianux 2.0带的1.1升级到了1.2.4,这升级也让配置文件也改变了。经过查询Google和man资料,只是实现了部分功能,即Linux-Linux的共享打印。可惜,没法实现Windows-Linux的远程打印。在Windows中添加cups提供的http/ipp协议打印机的时候,一直报错,让我非常纳闷:

引用
192.168.228.247 – – [08/Apr/2008:15:17:28 +0800] "POST /printers/hp3050z HTTP/1.1" 200 133 Get-Printer-Attributes successful-ok
192.168.228.247 – – [08/Apr/2008:15:17:29 +0800] "POST /printers/hp3050z HTTP/1.1" 200 75 windows-ext client-error-bad-request
192.168.228.247 – – [08/Apr/2008:15:17:29 +0800] "POST /printers/hp3050z HTTP/1.1" 200 133 Get-Printer-Attributes successful-ok

希望,若有朋友解决了该问题,也通知我一声。谢谢!

一、不使用https访问
cups 1.2.4版本为了安全期间,增加了很多安全措施,其中一项就是,默认必须使用https才能访问admin页面。但这很麻烦,需要配置TLS等证书,觉得根本没必要。
要去掉,修改/etc/cups/cupsd.conf配置文件,在DefaultAuthType Basic后增加:

引用
DefaultEncryption Never

※错误,原来我是按man的内容,修改/admin部分内容为:

引用
<Location /admin>
 #Encryption Required
 Encryption Never

其后发现,这是没用的。在修改conf等配置时,问题依旧。
后来,我是参考:这里解决的。

二、打开远程访问支持
1.2.4版本的配置更像Apache的配置模式了,默认只监听本地端口,需要增加外网网卡接口:

引用
Listen localhost:631
Listen 192.168.228.90:631

此外,还有一些默认只允许localhost访问的页面,也需要改一下,例如:

引用
<Location />
 Order allow,deny
 #Allow localhost
 Allow ALL
</Location>

其他地方配置相同。
(当然,也可设置为Allow 192.168.228.*的方式也行)

三、关于Windows连cups的问题
做好上述修改后,Linux-Linux的支持已经很好。
而我参考原来1.1.x版本的方式,使用Windows连接cups的631端口,就错误。详细现象是:
使用Windows的打印机配置向导,在选择“打印机驱动”后,打印机配置工具就出现“无法响应”的错误等待,从Windows任务管理器看,spoolsv.exe占用CPU约90%,几乎停止响应。
Linux后台cups日志报如下错误:

引用
192.168.228.247 – – [08/Apr/2008:15:17:28 +0800] "POST /printers/hp3050z HTTP/1.1" 200 133 Get-Printer-Attributes successful-ok
192.168.228.247 – – [08/Apr/2008:15:17:29 +0800] "POST /printers/hp3050z HTTP/1.1" 200 75 windows-ext client-error-bad-request
192.168.228.247 – – [08/Apr/2008:15:17:29 +0800] "POST /printers/hp3050z HTTP/1.1" 200 133 Get-Printer-Attributes successful-ok

经Google,发现类似的问题比较多,但似乎都没有找到解决方法。
其中有两个Workaround,地址如下:
big problems with printing
Problem printing in CUPS on Network
不过,我没有成功。
最后,我只能使用原来1.1.x的cups进行一个中转,暂时屏蔽了该问题:

引用
Windows – Asinuax 2.0 (1.1.x cups) – Asianux 3.0(1.2.4 cups)- HP 3050z

也就是让Asinuax 2.0作为一个中转站去实现。在1.1.x cups上运行:

# lpadmin -p hp3050z -m raw -v http://192.168.228.90:631/printers/hp3050z -D 'HP Laserjet 3050z' -E

然后Windows就连这台1.1.x cups。

※注意,1.2.x以上版本的cups,在web界面上配置,默认会根据打印机的型号选择打印机驱动。看上去是方便了不少,但却带来一个问题。
添加本地打印机是方便了,但若作为cups远程共享的打印机,需使用Raw模式,而非驱动模式,所以,对这种方式反而带来了麻烦。可以用下面的命令修改:

# lpadmin -p hp3050z -m raw

根本的问题没有找到解决方法,希望已经解决的朋友可以告诉我。谢谢!

四、附录
一份比较详细,在Debian上实现1.2.x以上版本cups共享的文章:
Howto: Printer sharing with CUPS

在Debian 7 下使用CUPS 1.5共享打印机
再次处理cups 1.2.4打印问题
修改驱动自定义页面大小的脚本
自定义CUPS中打印机的页面大小

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/112472.html

(0)
上一篇 2021年8月27日
下一篇 2021年8月27日

相关推荐

发表回复

登录后才能评论