条件:
一台CentOS,
没有显示器(也就没有X用),
有网线,
USB,
电源,
还有SSH;
一台HP LaserJet 1020激光打印机(万幸的是在openprinting的库里面,他是得到Mostly支持的 http://www.openprinting.org/printer/HP/HP-LaserJet_1020)
查询结果有以下四种情况:
(1)Perfectly:完全支持linux下打印,并且可以使用打印机所有功能和打印分辨率
(2)Mostly:大部分功能支持linux下打印,有一些小缺陷
(3)Partially:只有部分功能支持linux下打印,许多功能不能实现,比如彩色打印机只能打印黑白图像
(4)Paperweight:完全不支持linux下打印
根据其提供的链接(Recommended driver),找到驱动程序网站 http://foo2zjs.rkkda.com/打开来第一句话就雷到我了,用红色的框框包着。
*** DON'T USE the foo2zjs package from: Ubuntu, SUSE, Mandrake/Manrivia, Debian, RedHat, Fedora, Gentoo, Xandros, EEE PC, Linpus, MacOSX, or BSD!
*** Download it here and follow the directions below.
好吧,我表示遵命。
[bash]wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz
tar zxf foo2zjs.tar.gz
cd foo2zjs
yum install foomatic ghostscript
make
make install
make install-hotplug
make cups
[/bash]
可能会提示缺少foomatic过滤器,确什么自己装吧。
下面开始配置大名鼎鼎的CUPS->Common Unix Printing System
[bash]yum install cups cups-libs
vim /etc/cups/cupsd.conf
[/bash]
由于没有X,命令行下面添加打印机又不熟悉,于是动起来了web配置的脑筋,默认这个web配置只对localhost开放,需要编辑配置文件来打开
[bash]#Only listen for connections from the local machine.
Listen localhost:631
Listen IP:631
Listen /var/run/cups/cups.sock
#也可以直接改为Port 631监听所有端口
# Show shared printers on the local network.
Browsing On
BrowseOrder deny,allow
............
BrowseAllow @LOCAL
#Show printers shared by other systems
BrowseAddress @LOCAL
#Share printers connected to this system
#Allow @LOCAL表示允许本地子网
# Default authentication type, when authentication is required...
DefaultAuthType Basic
DefaultEncryption IfRequested
#上面加密还可以改成Never.因为不知道什么原因使用https://ip:631总是打不开
# Restrict access to the server...
<Location />
Order deny,allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
Allow @LOCAL
..........
</Location>
# Restrict access to the admin pages...
<Location /admin>
#Encryption Required
Encryption Never
Order deny,allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1
Allow @LOCAL
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
Encryption Never
AuthType Default
Require user @SYSTEM
#Order allow,deny
Order deny,allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1
Allow @LOCAL
</Location>
# Set the default printer/job policies...
.......................
[/bash]
完成后重启cups
[bash]service cups restart[/bash]
试试打开http://ip:631,应该可以了
然后添加打印机即可,向导操作,简单呢。添加打印机的时候,按照上面的配置可能提示要输入密码,请输入root用户密码.
添加完毕后就可以在web内控制打印机了。
如果是USB连接,而在CUPS里面找不到打印机,看看到/dev/usb/lp0等设备存在否
可以打印一个测试页。漂亮呢。
为了通过HTTP/IPP方式共享给Windows方式主机使用,还需要修改文件制式。
[bash]vim /etc/cups/mime.types[/bash]
取消对文末
application/octet-stream
的注释
[bash]vim /etc/cups/mime.convs[/bash]
取消对文末
application/octet-stream application/vnd.cups-raw 0 -
的注释
RAW模式不启用,你在/var/log/message里面就会看见报错的
这样的 打印机已经可以通过HTTP/IPP的方式共享了,但是还不能在windows上完美使用。
我的目标是通过samba完成共享,这样就不用记忆IP了。
下面开始
配置SAMBA
[bash]yum -y install samba
vim /etc/samba/smb.conf
[/bash]
修改Global字段的工作组名称
workgroup = WORKGROUP
netbios name = printserver
server string = My Print Server on %L (Via Samba %v)
hosts allow = 127. 192.168.1.
load printers = yes
cups options = raw
;不加这个无法通过SAMBA共享打印
; printcap name = cups
printcap name = /etc/printcap
#obtain list of printers automatically on SystemV
; printcap name = lpstat
printing = cups
;其他略
server string是服务器说明. %L代表主机名字 %v是Samba 版本
其他变量 t%-访问时间 I%-客户端 IP m%-客户端主机名 M%-客户端域名 S%-客户端用户名
netbios name就是机器名
关于安全设定,提及一下:
security = user
passdb backend = tdbsam
是 用户登录安全级别模式,其他还有share(共享)、server、 domain(windows server 2003 服务器域的客户端)等,我们这里使用user,直接使用linux账户就可以登录.
可以通过smbpasswd -a username来完成
这些不是配置打印共享的重点,所以不提太仔细了
修改printers字段设定
comment = All Printers
; path = /var/spool/samba
path = /var/spool/samba
browseable = yes
guest ok = yes
writable = yes
iprintabse = yes
use client driver = Yes
;兼容Win XP/2000
public = yes表示任何人都可以使用
其他设定略
创建samba 访问权限
上面已经提到了如何创建SAMBA用户的安全设定,只是粗略的带过,详细文档我另外在撰文。
TIPS:
1.奇怪的打印机消失之谜。
由于没纸了。重新放纸后HP LaserJet 1020 打印机不继续打印。我就把打印机重新启动了一下。发现居然CUPS就认不出来了。
然后删掉重新添加,提示没有找到新打印机。看接口里面也没有USB设备。但是/dev/usb/lp0设备存在的。
我把机器反复重启反复添加,吧驱动反复编译,把打印机开关机反复插拔,始终不能解决。
当时快下班了,也就没多搞,就让他在那里插着。就回学校了
谁知道回学校一连接远程上去一看,提示找到了一个新设备。而且在接口表里面已经有USB/HP LaserJet 1020 设备存在了。真是奇怪啊。
2.效果简介
实际上使用下来,foo2zjs这个开源驱动对LaserJet 1020的支持表现也就只能用 “能打印”来形容了。缺纸张添纸后不能恢复 ,CUPS把任务发给他就算成功了,遇到错误也不知道。
刚刚尝试把驱动换成了hplip,不过hplip默认没有LaserJet 1020的支持,我选择了HP LaserJet 1022 Foomatic/hpijs这个驱动。不知道能不能正常打印。继续观察中
要组建打印服务器,买之前先看看其驱动支持情况。
3.顺便提一下smbspool这个cups的后端
这个东西在smbclient里面。
deb系只要apt-get install smbclient
rpm系要yum install samba-client
名字不一样
装完后在/usr/lib/cups/backend下面就有一个软连接了
smb -> ../../../bin/smbspool
这个时候再看CUPS的添加打印机选项里面就有Windows Printer via SAMBA选项了
我一开始找的时候没找到
因为:
3.0.x versions of yum would erroneously match against filenames
使用通配符就找到了
[bash]yum provides *smbspool[/bash]
4.降低安全策略
我把policy一段都注释了。改成
[text]<Policy><Limit All>
Order deny,allow
</Limit>
</Policy>
[/text]
这样取消,添加删除打印机都不要root密码了。当然你可按照原先的模板进行各种级别的力度控制。
不是重点,不说了。
这个如果要linux使用windows共享的打印机呢?怎么配置,你这里只是USB模式的.
@ihipop
@freetstar
实际上使用下来LaserJet 1020的表现也就只能用 能打印来形容了。缺字后不能恢复 CUPS把任务发给他就算成功了,遇到错误也不知道。
要组建打印服务器,买之前先看看其驱动支持情况。
@freetstar
慢慢读。我年纪不大,即喜欢罗里吧唧的
好长 我终于读完了