快速业务通道

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

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

我们把创建临时文件的工作并入unix2dos.pl程序中。新的程序称为lp.pl:

#!/opt/bin/perl # open standard input open(FOO, "-"); # create temp file for writing open(OUT, "$#@62;/var/spool/lp/save_dir/tmp/$ARGV[0].$"); # if input stream is binary do not filter if ( -B FOO) { while () { print OUT 用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号

; } } # else filter the line unix2dos style else { while () { s/\n/\r\n/; print OUT; } } close(FOO); close(OUT); # send print request system("/bin/lp -s -d $ARGV[1] /var/spool/lp/save_dir/tmp/$ARGV[0].$");

下一步,我们向lp.pl传递两个参数:${request_id}, 和网络打印机。这个程序生成一个名字为:

${request_id}."进程的pid号"的过滤后的临时文件,并lp这个临时文件。然后,我们把过滤队列界面文件中的:

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

这一行,替换成:

FILTER="/var/spool/lp/save_dir/sbin/lp.pl ${request_id} no1316p-r"

让我们总结一下到了现在会发生什么:

用户(dlister)从客户机器发送一个lp作业:lp -d no1316p /var/adm/messages

打印服务器接受该作业,通过过滤队列处理这个请求

过滤队列记录当前的作业号(${request_id}),用户(dlister),以及文件名(/var/adm/messages)

输入送到lp.pl程序,该程序创建一个临时文件,并利用网络打印机队列执行一个lp命令。

到此,如果在网络打印机上执行lpq,结果会如下:

$ lpq -Pno1316p-r Rank Owner Job File(s) Total Size active lp 1629 /var/spool/lp/save_dir/tmp/no1316p-1625.2974 536 bytes

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

时间:2010-12-24

现在,我们只需要一个程序来索引log文件,找到no1316p-1625,然后返回初始的所有者和文件名。我们写了如下程序:

#!/bin/ksh typeset -i N typeset -i N2 # set N2 equal to the default number of fields per log file entry N2=3 if [ $# -ne 1 ] then echo "usage: $0 network_printer_queue" exit 1 fi echo "Rank Owner Job File(s) Total Size" /usr/ucb/lpq -P $1 | grep bytes | while read line do RANK=`echo $line | awk "{print $1}"` JOB=`echo $line | awk "{print $3}"` SIZE=`echo $line | awk "{print $5}"` TEMP=`echo $line | awk "{print $4}"` GREPSTUFF=`basename $TEMP | awk -F. "{print $1}"` OWNER=`grep -w $GREPSTUFF /var/spool/lp/save_dir/logs/request.log \ | awk "{print $2}"` # count the number of fields in the log file: 3 means a single file # printed more than # 3 means that several files were sent at once. N=`grep -w $GREPSTUFF /var/spool/lp/save_dir/logs/request.log \ | awk "{print NF}"` if [ $N -gt 3 ]; then FILE=`grep -w $GREPSTUFF /var/spool/lp/save_dir/logs/request.log \ | awk "{print \\$N2}"` echo "$RANK $OWNER $JOB $FILE $SIZE bytes" N2=N2+1; else N2=3 FILE=`grep -w $GREPSTUFF /var/spool/lp/save_dir/logs/request.log \ | awk "{print $3}"` echo "$RANK $OWNER $JOB $FILE $SIZE bytes" fi done

这段程序只要一个参数:打印服务器队列的名字。在我们的例子中,我们只需要输入 $ lpq.ksh no1316p-r 就可以显示以下结果:

Rank Owner Job File(s) Total Size

active dlister 1629 /var/adm/messages 536 bytes

用lpadmin打印多种内容

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号