cups ipp oracle,架设Linux打印服务器通过Web界面CUPS管理其他电脑访问CUPS web管理界面IPP协议共享本机打印机...

简介: 添加Windows2000或XP机器共享该打印服务器的做法,由于Windows2000或XP都已经内建对IPP协议的支持,所以只须简单地在添加打印机中选添加网络打印机,然后选Internet打印机文本框

缺省安装好Ubuntu之后,系统会出于安全考虑对CUPS系统进行限制,主要有以下几点:

1、不能通过Web界面 http://localhost:631/admin 对CUPS进行Web管理;

2、不能在其他机器上通过Web界面访问本机的http://localhost:631,以查看打印状态;

3、不能在其他机器上通过IPP协议来共享本机的打印机。

推荐:

68c7d9000305d0d1c22612768aaa09f9.png

通过Web界面管理CUPS打印机

对上述三个问题,大家可以按照自己的需要做不同的设置:

1、造成该限制的原因很简单,由于cupsys用户没有访问/etc/shadow文件的权限,所以它无法识别用户真伪,要解决则很简单,只需要将该用户加入到passwd组中即可。命令如下:

$sudo adduser cupsys shadow

另:对打印机有管理权限的组是lpadmin组,所以如果要设立一个对CUPS系统有管理权的用户,只需要将该用户加入到lpadmin组即可,假设该打印管理员是firehare,那么只需要下列命令:

$sudo adduser firehare lpadmin

然后输入

$sudo /etc/init.d/cupsys force-reload

接下来我们试试在Firefox里输入:http://localhost:631/admin,然后输入超级用户或lpadmin组里的用户及密码均可进入到管理界面中。

2、造成这一限制的原因有两个:

首先,由于在/etc/cups/cupsd.conf文件中有一行语句做了限制:

>Listen 127.0.0.1:631

这句话的意思很明显就是只在本机环回口上的631端口做监听,那么肯定其它机器是无法对其访问了,所以要将其改成:

>Port 631

这样的话,其他机器就可以访问本机的631端口了。

其次,由于尚未对访问权限进行配置,所以如果这时从其他机器通过FireFox来访问本机的CUPS系统的Web界面时,将会出现无权查看的提示页面。继续编辑cupsd.conf文件:

>########

>######## Security Options

>########

>

>Order Deny,Allow

>Deny From All

>#Allow From 127.0.0.1

>Allow From 192.168.0.*

将127.0.0.1注释掉,并把你要允许访问的网段加进来即可,我这里是192.168.0.0/24网段,如果你的网段比较小,也可以用小点的网段,在cupsd.conf文件中允许以下格式:

# All

# None

# *.domain.com

# .domain.com

# host.domain.com

# nnn.*

# nnn.nnn.*

# nnn.nnn.nnn.*

# nnn.nnn.nnn.nnn

# nnn.nnn.nnn.nnn/mm

# nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm

# @LOCAL

# @IF(name)

大家可以选择最适合自己的。

然后别忘了重启服务:

$sudo /etc/init.d/cupsys force-reload

再打开FireFox访问试试?是不是可以看到了网页呢?

如果你还想在其他机器上能够通过Web界面对本机的CUPS进行管理的话,你还可以继续编辑cupsd.conf文件:

>

>#

># You definitely will want to limit access to the administration functions.

># The default configuration requires a local connection from a user who

># is a member of the system group to do any admin tasks. You can change

># the group name using the SystemGroup directive.

>#

>AuthType Basic

>AuthClass System

>## Restrict access to local domain

>Order Deny,Allow

>Deny From All

>#Allow From 127.0.0.1

>Allow From 192.168.0.x

>#Encryption Required

>

下面就是纯理论了!因为没有环境,无法进行测试,不知哪位有条件的兄弟可以帮我做做测试。有什么结果都请贴在后面!!不胜感激!!!

==================================

3、要解决这个问题,首先要能让其他机器找到本机的打印机,如果找都找不到,又如何能够使用呢?由于Ubuntu是将该功能另行放置在 /etc/cups/cupsd-browsing.conf文件中的,原因是为了防止由于升级包文件而将配置覆盖,所以只需将该文件中的浏览Off变成 On就可以了。如下所示:

>Browsing Off => Browsing On

虽然在Ubuntu中还有一个/usr/share/cups/enable_browsing脚本来将其设为On,不过我在做测试时却并不能正常运行,可能是由于/usr/share/cups/browsing_status脚本的原因吧!反正所做的事都一样,我也就没去深究了。然后在 /etc/cups/cupsd.conf文件中设置浏览的广播地址,将本地的关闭,添加192.168.0.255这个网段广播地址:

$sudo adduser firehare lpadmin0

如果你的网段比较小,也可以用小点的网段,在cupsd.conf文件中允许以下格式:

$sudo adduser firehare lpadmin1

然后设置允许浏览的地址:

$sudo adduser firehare lpadmin2

保存,然后重启cups

$sudo /etc/init.d/cupsys force-reload

这样就应该可以提供服务了吧!

===========================

添加Windows2000或XP机器共享该打印服务器的做法,由于Windows2000或XP都已经内建对IPP协议的支持,所以只须简单地在添加打印机中选添加网络打印机,然后选Internet打印机文本框,输入:

$sudo adduser firehare lpadmin4

,然后下一步,安装该打印机的驱动即可!这样的话,也就省了用Samba进行共享,还要起Samba服务的麻烦了!

而在Linux下则有一个很奇怪的现象,用Linux做客户端来打印的话,用Linux下的推荐的 http://hostname:631/ipp/port1 我没有打印出任何的文档, 而相反用Windows下推荐的方法 http://hostname:631/printers/printer-name 反而可以正常打印,不知有否高人知道为什么,还望不吝赐教!最后 祝大家用得开心!!

https://blog.51cto.com/firehare/588261

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux下使用Qt集成CUPS(Common Unix Printing System)可以实现打印PDF文件,并指定打印机的纸盒和纸张大小。 以下是实现步骤: 1. 首先需要安装CUPS,在Ubuntu下可以通过以下命令安装: sudo apt-get install cups 2. 安装完成后,需要启动CUPS服务: sudo service cups start 3. 在Qt项目中添加头文件(需要安装libcups2-dev): #include <cups/cups.h> 4. 获取CUPS默认打印机名称: char *printerName = cupsGetDefault(); 5. 获取打印机的属性: cups_dest_t *dest = cupsGetDest(printerName, NULL, num_dests, dests); 其中,num_dests为打印机数量,dests为打印机列表。 6. 获取打印机的纸盒列表: ipp_attribute_t *attr = cupsFindDestSupported(dest, "media-source"); 7. 获取打印机支持的纸张大小: ipp_attribute_t *attr = cupsFindDestSupported(dest, "media"); 8. 打印PDF文件: cupsPrintFile(printerName, filePath, "Test Print", num_options, options); 其中,filePath为PDF文件路径,num_options为选项数量,options为选项列表,可以指定纸张大小和纸盒等。 完整代码如下: #include <cups/cups.h> int main(int argc, char *argv[]) { // 获取CUPS默认打印机名称 char *printerName = cupsGetDefault(); // 获取打印机的属性 int num_dests = 0; cups_dest_t *dests, *dest; dests = cupsGetDests(NULL, NULL, &num_dests); dest = cupsGetDest(printerName, NULL, num_dests, dests); // 获取打印机的纸盒列表 ipp_attribute_t *attr = cupsFindDestSupported(dest, "media-source"); const char **media_sources = ippEnumString(attr->value_tag); int num_media_sources = ippGetCount(attr); // 获取打印机支持的纸张大小 attr = cupsFindDestSupported(dest, "media"); const char **media_sizes = ippEnumString(attr->value_tag); int num_media_sizes = ippGetCount(attr); // 打印PDF文件 int num_options = 2; cups_option_t *options = NULL; options = cupsAddOption("PageSize", "A4", num_options, options); options = cupsAddOption("media-source", "Tray2", num_options, options); cupsPrintFile(printerName, "/path/to/pdf", "Test Print", num_options, options); return 0; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值