| Line |   | 
|---|
| 1 | #!/usr/bin/perl
 | 
|---|
| 2 | #
 | 
|---|
| 3 | # 0 == stdin  == docuement
 | 
|---|
| 4 | # 1 == stdout == printer
 | 
|---|
| 5 | # 2 == stderr == logging
 | 
|---|
| 6 | #
 | 
|---|
| 7 | # With redirection to another valid /etc/printcap entry
 | 
|---|
| 8 | #
 | 
|---|
| 9 | 
 | 
|---|
| 10 | umask(002);
 | 
|---|
| 11 | 
 | 
|---|
| 12 | # -w132 -l66 -i0 -n pkelly -h master.fcp.oypi.com /var/log/lp-acct
 | 
|---|
| 13 | require "getopts.pl";
 | 
|---|
| 14 | &Getopts("w:l:i:n:h:");
 | 
|---|
| 15 | 
 | 
|---|
| 16 | chomp($date = `date '+%Y-%m-%d.%T'`);
 | 
|---|
| 17 | 
 | 
|---|
| 18 | ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
 | 
|---|
| 19 |         $atime,$mtime,$ctime,$blksize,$blocks)
 | 
|---|
| 20 |  = stat(STDIN);
 | 
|---|
| 21 | 
 | 
|---|
| 22 | # send to the real printer now.
 | 
|---|
| 23 | open(P, "|lpr -Pmgmt0") || die "Can't print to hp5-real ($!)\n";
 | 
|---|
| 24 | $cnt = 0;
 | 
|---|
| 25 | while (sysread(STDIN, $buf, 10240)) {
 | 
|---|
| 26 |         print P $buf;
 | 
|---|
| 27 |         # this is ugly, but it gives the approx in pages.  We
 | 
|---|
| 28 |         # don't print graphics, so ...  There must be a better way :)
 | 
|---|
| 29 |         $cnt += ($buf =~ /^L/g);
 | 
|---|
| 30 | }
 | 
|---|
| 31 | close(P);
 | 
|---|
| 32 | 
 | 
|---|
| 33 | $acct = shift;
 | 
|---|
| 34 | if (open(ACCT, ">>$acct")) {
 | 
|---|
| 35 |         print ACCT "$date $opt_n $opt_h $size $cnt\n";
 | 
|---|
| 36 |         close(ACCT);
 | 
|---|
| 37 | } else {
 | 
|---|
| 38 |         warn "Err: Can't account for it ($!)\n";
 | 
|---|
| 39 |         warn "Log: $date $opt_n $opt_h $size $cnt\n";
 | 
|---|
| 40 | }
 | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.