利用samba做打印机共享

办公室原来用一台跑WIN2K3的破电脑做打印机共享服务,可能是年代久远,系统越来越不稳定,于是决定换成LINUX基于SAMBA做打印共享服务。其间走了不少弯路,在此将配置流程简记于此,希望对大家有所帮助。
操作系统版本:CENTOS 5.5

一、打印机安装
办公室使用的打印机是HP Color LaserJet 1600,翻了一下HP官方站没有找到LINUX驱动支持。于是登录http://www.openprinting.org/printer,查找到推荐的OPEN驱动是foo2hp http://foo2hp.rkkda.com/。不过网站里没有提供下载链接,而是转向到foo2zjs http://foo2zjs.rkkda.com/,上官方论坛看了一下,似乎foo2zjs是foo2hp的升级版,所以兄弟们不要跟着网上那些旧文再到处找foo2hp的源码包了。

1、驱动安装
首先确保CUP服务正常开启。
wget http://foo2zjs.rkkda.com/foo2zjs.tar.gz
tar zxf foo2zjs.tar.gz
cd foo2zjs
以下操作建议以root身份执行,或者用su命令,否则会报错。另外安装前强烈建议看一下INSTALL文档

make uninstall
./getweb 1600     #此步骤参数根据具体打印机型号不同而不同,建议less INSTALL
make install
make install-hotplug   #如果是USB接口打印机的话,此步骤执行完后重新拔插一下USB连接线
make cups

以上步骤执行完毕后,LINUX下驱动基本OK,INSTALL文档中的后续步骤make test,可以不做。

2、cup配置
vi /etc/cups/cupsd.conf
添加:Listen 0.0.0.0:631

vi /etc/cups/mime.convs
取消此行注解 application/octet-stream   application/vnd.cups-raw   0   -

vi /etc/cups/mime.types
取消此行注解 application/octet-stream

/etc/init.d/cups restart    #重启cups服务
netstat -tunlp | grep '631'    #检查cups的WEB管理器是否正常启动

访问cups的web管理页面
elinks http://localhost:631
选择manage printers,点击Add printer
在Add New Printer界面里输入打印机的名称和描述(可以随意)
然后选择打印机的接口,我选择的是USB Printer #1
之后是选择打印机型号,打印机应该就配好了。这时在打印机详细页里点一下Print Test Page看看是否能正确打印,一切OK后,记得Set as Default。
退出elinks

二、samba配置
1、基本安装配置
yum install samba
mkdir /etc/samba/drivers
mkdir -m 777 /var/spool/samba

vi /etc/samba/smb.conf    #参数含义就不写了,麻烦自己man smb.conf或者GOOGLE
[global]
  workgroup = WORKGROUP
  server string =office server
  netbios name =svr01
  display charset=UTF8
  dos charset=cp936
  unix charset=UTF8       
  security = share
  passdb backend = tdbsam
  encrypt passwords=yes       
  load printers = yes
  printcap name = cups
  printing = cups
[printers]
  comment = All Printers
  path = /var/spool/samba
  browseable = yes
  guest ok =yes
  public=yes
  writable = no
  printable = yes
  create mask = 0700
[print$]
  comment=printer drivers
  path=/etc/samba/drivers
  browseable=yes
  guest ok=yes
  read only=yes
  write list=root

编辑结束后执行testparm检查配置文件是否正确。
重启samba服务,/etc/init.d/smb restart

2、WINDOWS客户端打印驱动自动安装
经过上面配置后,WINDOWS客户端就可以找到共享的打印机了,但连接时会要求安装驱动,一两台机器手动装装倒也就算了,20多台机器那就让人受不了了。下面来说说怎么让客户端的驱动自动安装。

首先到 http://www.cups.org/windows/software.php 下载最新的 CUPS Windows drivers驱动,我下载的是cups-windows-6.0-source.tar.gz,然后解压并安装。

接下来需要找台WINXP或WIN2K3的机器,到http://www.adobe.com/support/downloads/product.jsp?product=44&platform=Windows下载并安装最新的PostScript printer drivers for Windows。
安装完毕,在WINDOWS系统目录搜索下列文件:
cups6.ini
cupsps6.dll
cupsui6.dll
ps5ui.dll
pscript5.dll
pscript.hlp
pscript.ntf

如果是Windows 9x/ME的机器还需要:
adfonts.mfm
adobeps4.drv
adobeps4.hlp
iconlib.dll
psmon.dll

把这些文件COPY到LINUX服务器的/usr/share/cups/drivers/目录下

创建驱动:
smbpasswd -a root    #此处用户名与smb.conf中[print$]节点中的writer list的值对应
ifdown eth0
cupsaddsmb -H localhost -U root -a -v
/etc/init.d/samba restart
/etc/init.d/cups restart
ifup eth0


至此大功告成,办公室里的WINDOWS客户机可以通过共享的方式连接到LINUX服务器上的打印机,无须用户认证并自动安装打印驱动。

参考链接:
http://linux.chinaunix.net/techdoc/net/2007/03/08/951808.shtml
http://www.enterprisenetworkingplanet.com/netsysm/article.php/10954_3621876_1/Push-Windows-Printer-Drivers-with-CUPS.htm

posted @ 2011-04-10 13:21  lykyl的自留地  阅读(1858)  评论(0编辑  收藏  举报