快速业务通道

用lpadmin打印多种内容形式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
使用Hewlett-Packard的 JetAdmin 软件--SUN的推荐方案。我们设置一台机器作为打印服务器,然后安装JetAdmin软件。棒极了。我们能够完美无缺地打印这三种文件。我们能够设置客户机,以这台服务器做打印缓冲;而且软件提供了信息,用来管理不必要的打印作业。我们找到了解决方案!错了,我们被告知不能替换XCD卡。

还没有得到SUN公司的反馈信息,我们选择重新试验"double spooling"双缓冲的方案

用lpadmin打印多种内容形式(4)

时间:2010-12-24

尝试三:重试双缓冲

双缓冲方案已经接近成功,我们不能完全放弃它。只是unix2dos的限制妨碍成功。如果我们能检查输入文件,只对非二进制文件执行unix2dos,那就成了。我们写了一个简单的Perl程序(unix2dos.pl)来做这些:

#!/opt/bin/perl # open standard input open(FOO, "-"); # test if binary if ( -B FOO) { while () { print 用lpadmin打印多种内容形式 - 编程入门网 - 凌众科技

快速业务通道

用lpadmin打印多种内容形式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

; } } # if not binary.. perform unix2dos filtering else { while () { s/\n/\r\n/; print; } } close(FOO);

界面文件中的那一行改成如下:

FILTER=/opt/utils/unix2dos.pl | lp -s -d no1316p-r

可以了。我们可以毫无问题地打印这三种文件了。不幸,由于双重缓冲,在 no1316p-r 中的打印作业不再具有有意义的名字和所有者了。例如,当一个客户打印一个文件,比如/etc/passwd;在打印服务器上执行lpq -Pno1316p ,会有以下结果:

$ lpq -Pno1316p Rank Owner Job File(s) Total Size active dlister 313 /etc/passwd 522 bytes

但是当no1316p过滤了这个作业,并把它重定向到 lp -s -dno1316p-r后,在打印服务器上执行lpq -Pno1316p-r ,我们会有以下结果:

$ lpq -Pno1316p-r Rank Owner Job File(s) Total Size active lp 1629 1629-1 536 bytes

没有恰当指定的文件名和所有者,用户不能跟踪在打印队列里的文件,管理员也不能从队列中删除打印作业。

尝试4:找一个折衷  

因为我们已经成功地打印这三种文件,现在我们需要的只是网络打印机队列中的有意义的信息。我们知道,当打印作业在过滤队列(如no1316p)中排队时,原始的文件名和用户名是可用的。我们必须找出一个办法,保存这些信息,并把它们与在实际的网络打印机队列(如no1316-r)中排队的打印作业对应起来。

我们知道,当一个作业通过过滤队列时,lp子系统会返回我们感兴趣的信息。所以显而易见,我们应该能够通过环境变量利用这些信息。我们感兴趣的变量可以用在过滤队列的界面描述文件中:${request_id}, ${user_name},${files}, 和 ${flist}。但是我们仍然面临一个问题:把这些信息同实际的网络打印机队列的lpq联系起来。我们需要一种手段,记录那些进入过滤队列的请求;还需要一个方法,把网络打印机队列中的各个项映射回初始的信息。

我们最终采用的策略是,将输入过滤到一个临时文件,文件名中包含初始的${request_id}。然后重定向该临时文件的lp,现在网络打印机队列的lpq 信息中以文件名的形式包含了初始的${request_id} 。只剩下log文件了。我们进一步修改过滤队列的界面描述文件,在if [ -z "${FILTER}" ]后加上以下程序:

# write current request_id user_name and flist to logfile # if the flist variable is null, we are printing a single file, # therefore echo ${files} # else echo ${flist} if [ "$flist" = "" ]; then echo "${request_id} ${user_name} ${files}" \ $gt; $gt; /var/spool/lp/save_dir/logs/request.log else echo "${request_id} ${user_name} ${flist}" \ $gt; $gt; /var/spool/lp/save_dir/logs/request.log fi

用lpadmin打印多种内容形式(5)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号