Apr 8

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

linuxing , 16:10 , 基础知识 » 故障处理 , 评论(0) , 引用(0) , 阅读(16185) , Via 本站原创 | |
   关于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
Tags:
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]