~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to examples/printer-accounting/hp5-redir

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}