Apr
29
[原]用好Linux下的CUPS打印机服务
目前的Linux发行版本基本上都使用cups作为Linux下管理打印的服务应用。CUPS软件为Unix/Linux用户提供了有效而可靠的方式来管理打印的方法。它生来就支持IPP,并有LPD、SMB和JetDirect接口。CUPS本身可以提供网络打印机功能,使用它可以非常方便的令Linux与Linux之间、Linux与Windows之间实现打印共享。
今天提到这个问题,是由于发现很多的用户在使用Linux的时候,沿用的是Windows下的习惯,用Samba进行打印机共享。其实Linux下的Samba打印机共享,是Samba连接本地的cups服务,然后提供出来的,这样会有几个问题:
解决的最简单的方法,就是直接通过cups打印,它不需要密码,而且可以通过TCP协议进行,速度和质量都更有保障。
※测试平台
服务器系统: 红旗 DC Server 5.0 for x86,IP:192.168.228.153
桌面系统:Windows XP SP2 和 红旗 桌面 4.1/5.0
网络:192.168.228.x网段
一、配置允许远程访问
红旗DC Server 5.0安装后就已经配置有cups服务,可以通过下面的命令获得版本:
但默认的配置中,cups是只允许本地打印,我们要修改它。修改/etc/cups/cups.conf文件,把:
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
改为:
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.228.*
若你要使用远程管理的,再把:
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
改为:
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.228.*
☆不使用远程管理的,不要修改/admin节。
最后,重新cups服务:
可以看到631端口已经打开:
二、配置服务器的打印机
有两种方法可以选择:一是使用lpadmin命令增加打印机;二是使用Web和XWin下的配置界面。既然我已经打开了远程管理,当然是使用Web最简单咯。
1、使用浏览器访问http://192.168.228.153:631/
2、点击“Manage Printers”,然后输入root管理员的用户名和密码后,点击“Add Printer”;
3、在Name中输入打印机名字,点击“continue”;
4、选择服务器连接的本地打印机,一般是usb或并口,可以在图中看到;
5、选择打印机厂商
由于我们只是通过cups进行管理,并不是一定要在本地进行打印工作,所以可以使用raw(原始打印机)的方式。
6、选择打印机驱动
7、完成即可。点击上面的“Administration”回到管理主界面,进入“Manage Printer”,点击“Print Test Page”可以进行测试页打印。
到此,服务器的打印机是已经添加完成了。
三、添加客户端打印机
1、Windows客户端
在使用cups连接的网络打印服务前,必须停止XP的防火墙服务,或添加631的协议。否则会引起问题的。安装步骤如下:
1)从控制面板 双击 “打印机”
2)在弹出的对话框中选择 “添加打印机”
3)选择添加的打印机类型为 “网络打印机”
在URL下输入地址:http://192.168.228.153:631/printers/printer,如图:
※千万不要漏了端口。如果cups版本是1.1.21以前,需要先建立类classes才能连接,这个在最后描述。(红旗DC 5.0是不需要的)
如果提示URL错误,请纠正。否则点击“下一步”,然后提供Windows下的打印机驱动即可。
2、Linux客户端
这里我使用的是红旗桌面 5.0,其实就是在Xwin下本地的cups服务连接到远程的cups服务器上,方法是非常简单的。但有个前提,就是客户端必须有打印机在linux下的驱动,否则机器是不能打印或打印有错的。相关的打印驱动,可以咨询红旗公司,或查询下面的网站:
www.linuxprinting.org
1)进入“控制面板”,点击“打印机管理”;
2)选择添加“网络打印机”
3)在URI中输入地址:http://192.168.228.153:631/printers/printer
并点击子网下的“设置”按钮,输入网段192.168.228,确认后,按“扫描”,然后点“下一步”;
4)选择打印机厂商和型号,点击“下一步”;
5)若需要测试,可以在这里打印测试页,点击“下一步”;
6)最后给个喜欢的名字它,然后确认即可。
※采用类似的方法,你可以在本地访问http://localhost:631/,然后在添加打印机的时候,使用internet printer protocol(http)协议,并输入正确的URI地址和驱动也可以。
四、附录
1、打印类Classes
在cups 1.1.21之前的版本,需要采用打印类的方式才能提供远程网络打印服务,可以在“Manage Printer Classes”中添加打印类。方法比较简单,建立类后,添加组员打印机即可。但远程连接的URI表示有点不同:
2、远程URI的表示方式,一般有两种:
和
请根据不同的情况进行选择。
3、手动安装的cups打印机的一些命令,范例:
1. 添加名为 LaserJet 的打印机 (-p)
2. 启用要使用的打印机 (-E)
3. 设置要使用的设备和设备类型 (-v)
4. 使用驱动程序/PPD 文件 laserjet.ppd (-m)
字符下打印:
lp 语法将文件 /etc/aliases 打印到 LaserJet 打印机 (-d)。
临时禁用和启动打印机:
更详细的资料和商业的解决方法,请参考:ESP Print Pro
今天提到这个问题,是由于发现很多的用户在使用Linux的时候,沿用的是Windows下的习惯,用Samba进行打印机共享。其实Linux下的Samba打印机共享,是Samba连接本地的cups服务,然后提供出来的,这样会有几个问题:
引用
1、打印状态在Windows下看不到;
2、从Windows下访问Samba需要访问密码;
3、容易出现由于网络复杂,导致使用UDP协议的Samba连接超时或连接时间很长的问题。
2、从Windows下访问Samba需要访问密码;
3、容易出现由于网络复杂,导致使用UDP协议的Samba连接超时或连接时间很长的问题。
解决的最简单的方法,就是直接通过cups打印,它不需要密码,而且可以通过TCP协议进行,速度和质量都更有保障。
※测试平台
服务器系统: 红旗 DC Server 5.0 for x86,IP:192.168.228.153
桌面系统:Windows XP SP2 和 红旗 桌面 4.1/5.0
网络:192.168.228.x网段
一、配置允许远程访问
红旗DC Server 5.0安装后就已经配置有cups服务,可以通过下面的命令获得版本:
# rpm -qa|grep cups
cups-libs-1.1.22-0.rc1.9.6.3AX
gimp-print-cups-4.2.7-2.1AX
libgnomecups-0.1.12-5
libgnomecups-devel-0.1.12-5
cups-1.1.22-0.rc1.9.6.3AX
cups-devel-1.1.22-0.rc1.9.6.3AX
cups-libs-1.1.22-0.rc1.9.6.3AX
gimp-print-cups-4.2.7-2.1AX
libgnomecups-0.1.12-5
libgnomecups-devel-0.1.12-5
cups-1.1.22-0.rc1.9.6.3AX
cups-devel-1.1.22-0.rc1.9.6.3AX
但默认的配置中,cups是只允许本地打印,我们要修改它。修改/etc/cups/cups.conf文件,把:
引用
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
改为:
引用
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.228.*
若你要使用远程管理的,再把:
引用
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
改为:
引用
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.228.*
☆不使用远程管理的,不要修改/admin节。
最后,重新cups服务:
# service cups restart
可以看到631端口已经打开:
# netstat -ln|grep 631
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:631 0.0.0.0:*
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:631 0.0.0.0:*
二、配置服务器的打印机
有两种方法可以选择:一是使用lpadmin命令增加打印机;二是使用Web和XWin下的配置界面。既然我已经打开了远程管理,当然是使用Web最简单咯。
1、使用浏览器访问http://192.168.228.153:631/
2、点击“Manage Printers”,然后输入root管理员的用户名和密码后,点击“Add Printer”;
3、在Name中输入打印机名字,点击“continue”;
4、选择服务器连接的本地打印机,一般是usb或并口,可以在图中看到;
5、选择打印机厂商
由于我们只是通过cups进行管理,并不是一定要在本地进行打印工作,所以可以使用raw(原始打印机)的方式。
6、选择打印机驱动
7、完成即可。点击上面的“Administration”回到管理主界面,进入“Manage Printer”,点击“Print Test Page”可以进行测试页打印。
到此,服务器的打印机是已经添加完成了。
三、添加客户端打印机
1、Windows客户端
在使用cups连接的网络打印服务前,必须停止XP的防火墙服务,或添加631的协议。否则会引起问题的。安装步骤如下:
1)从控制面板 双击 “打印机”
2)在弹出的对话框中选择 “添加打印机”
3)选择添加的打印机类型为 “网络打印机”
在URL下输入地址:http://192.168.228.153:631/printers/printer,如图:
※千万不要漏了端口。如果cups版本是1.1.21以前,需要先建立类classes才能连接,这个在最后描述。(红旗DC 5.0是不需要的)
如果提示URL错误,请纠正。否则点击“下一步”,然后提供Windows下的打印机驱动即可。
2、Linux客户端
这里我使用的是红旗桌面 5.0,其实就是在Xwin下本地的cups服务连接到远程的cups服务器上,方法是非常简单的。但有个前提,就是客户端必须有打印机在linux下的驱动,否则机器是不能打印或打印有错的。相关的打印驱动,可以咨询红旗公司,或查询下面的网站:
www.linuxprinting.org
1)进入“控制面板”,点击“打印机管理”;
2)选择添加“网络打印机”
3)在URI中输入地址:http://192.168.228.153:631/printers/printer
并点击子网下的“设置”按钮,输入网段192.168.228,确认后,按“扫描”,然后点“下一步”;
4)选择打印机厂商和型号,点击“下一步”;
5)若需要测试,可以在这里打印测试页,点击“下一步”;
6)最后给个喜欢的名字它,然后确认即可。
※采用类似的方法,你可以在本地访问http://localhost:631/,然后在添加打印机的时候,使用internet printer protocol(http)协议,并输入正确的URI地址和驱动也可以。
四、附录
1、打印类Classes
在cups 1.1.21之前的版本,需要采用打印类的方式才能提供远程网络打印服务,可以在“Manage Printer Classes”中添加打印类。方法比较简单,建立类后,添加组员打印机即可。但远程连接的URI表示有点不同:
2、远程URI的表示方式,一般有两种:
引用
http://CUPS服务器的IP地址:631/classes/打印机类名
和
引用
http://CUPS服务器的IP地址:631/printers/打印机名称
请根据不同的情况进行选择。
3、手动安装的cups打印机的一些命令,范例:
/usr/sbin/lpadmin -p LaserJet -E -v parallel:/dev/lp0 -m laserjet.ppd
1. 添加名为 LaserJet 的打印机 (-p)
2. 启用要使用的打印机 (-E)
3. 设置要使用的设备和设备类型 (-v)
4. 使用驱动程序/PPD 文件 laserjet.ppd (-m)
字符下打印:
/usr/bin/lp -d LaserJet /etc/aliases
lp 语法将文件 /etc/aliases 打印到 LaserJet 打印机 (-d)。
临时禁用和启动打印机:
/usr/bin/disable -r "Changing Paper" LaserJet
/usr/bin/enable LaserJet
/usr/bin/enable LaserJet
更详细的资料和商业的解决方法,请参考:ESP Print Pro
very good.