Some examples for printer accounting that I use with samba. lp-acct is
authorSamba Release Account <samba-bugs@samba.org>
Tue, 23 Jul 1996 03:30:56 +0000 (03:30 +0000)
committerSamba Release Account <samba-bugs@samba.org>
Tue, 23 Jul 1996 03:30:56 +0000 (03:30 +0000)
an example for a local printer off a samba server, hp5-redir is for a
remote printer.  acct-sum, does the stats from acct-all.  There is an
example printcap entry for the redirection of the printer.  Lots more
to come!

<pkelly@ets.net>

examples/printer-accounting/README [new file with mode: 0644]
examples/printer-accounting/acct-all [new file with mode: 0644]
examples/printer-accounting/acct-sum [new file with mode: 0644]
examples/printer-accounting/hp5-redir [new file with mode: 0644]
examples/printer-accounting/lp-acct [new file with mode: 0644]
examples/printer-accounting/printcap [new file with mode: 0644]

diff --git a/examples/printer-accounting/README b/examples/printer-accounting/README
new file mode 100644 (file)
index 0000000..b7ab42a
--- /dev/null
@@ -0,0 +1,63 @@
+These are just a few examples of what you can do for printer accounting;
+they are really just hacks to show a manager how may pages were being
+printed out on his new hp5n :)
+
+acct-all will run acct-sum and read the log files to generate some
+stats.
+
+Here is a sample output of the raw stats :
+
+1996-06-10.15:02:15 pkelly master.fcp.oypi.com 538 0
+1996-06-10.15:06:40 pkelly master.fcp.oypi.com 537 0
+1996-06-10.15:32:12 ted master.fcp.oypi.com 547 0
+1996-06-11.09:06:15 violet master.fcp.oypi.com 2667 0
+1996-06-11.09:48:02 violet master.fcp.oypi.com 66304 5
+1996-06-11.09:50:04 violet master.fcp.oypi.com 116975 9
+1996-06-11.09:57:20 violet master.fcp.oypi.com 3013 1
+1996-06-11.10:13:17 pkelly master.fcp.oypi.com 3407 1
+1996-06-11.12:37:06 craig master.fcp.oypi.com 13639 2
+1996-06-11.12:42:23 pkelly master.fcp.oypi.com 13639 2
+1996-06-11.12:45:11 marlene master.fcp.oypi.com 515 0
+1996-06-11.14:17:10 lucie master.fcp.oypi.com 1405 1
+1996-06-11.14:36:03 laura master.fcp.oypi.com 45486 5
+1996-06-11.15:08:21 violet master.fcp.oypi.com 1923 1
+1996-06-11.15:09:42 laura master.fcp.oypi.com 4821 1
+1996-06-11.15:12:28 laura master.fcp.oypi.com 46277 5
+1996-06-11.15:19:38 violet master.fcp.oypi.com 3503 1
+1996-06-11.15:21:49 lucie master.fcp.oypi.com 493 0
+1996-06-11.15:43:36 al master.fcp.oypi.com 3067 1
+
+And the output after the acct-sum is done on a full set of files
+in /var/log/lp/*
+
+master[1072] /var/log/lp$ /etc/conf/acct-all 
+
+Sun Jul 21 23:03:16 EDT 1996
+
+Pages are approximate ...
+
+User             Jobs    Pages     Size
+al                  1        1        2 KB
+craig               1        2       13 KB
+jack               68      235     1995 KB
+laura              88      328     3050 KB
+lucie             221      379     3529 KB
+marlene            12      151     1539 KB
+melanie            83      365     3691 KB
+michelle           68      219     1987 KB
+mike                2       10       81 KB
+neil              111      225     2753 KB
+operator           44      137     1132 KB
+pkelly            368      984    11154 KB
+root                8        0       29 KB
+ted               158      257     2337 KB
+tony              244      368     2455 KB
+violet            419     1002    10072 KB
+
+
+Printer          Jobs    Pages         
+hp2p                3        4
+hp5               915     2135
+lp                978     2524
+
+<pkelly@ets.net>
diff --git a/examples/printer-accounting/acct-all b/examples/printer-accounting/acct-all
new file mode 100644 (file)
index 0000000..dc8f175
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+echo ""
+date
+echo ""
+echo "Pages are approximate ..."
+echo ""
+/etc/conf/acct-sum /var/log/lp/*
+echo ""
diff --git a/examples/printer-accounting/acct-sum b/examples/printer-accounting/acct-sum
new file mode 100644 (file)
index 0000000..ffbfc8d
--- /dev/null
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+
+while (<>) {
+        ($date, $user, $machine, $size, $pages) = split(' ');
+
+        $Printer{$ARGV}++;
+        $PrinterPages{$ARGV} += $pages;
+
+        $Jobs{$user}++;
+        $Size{$user}+= $size;
+        $Pages{$user}+= $pages;
+}
+
+printf "%-15s %5s %8s %8s\n", qw(User Jobs Pages Size);
+foreach $user (sort keys %Jobs) {
+        printf "%-15s %5d %8d %8d \KB\n",
+                $user, $Jobs{$user},  $Pages{$user}, $Size{$user}/1024;
+}
+
+
+print "\n\n";
+printf "%-15s %5s %8s %8s\n", qw(Printer Jobs Pages);
+foreach $prn (sort keys %Printer) {
+        ($name = $prn) =~ s=.*/==;
+        printf "%-15s %5d %8d\n",
+                $name, $Printer{$prn}, $PrinterPages{$prn};
+}
+
+
diff --git a/examples/printer-accounting/hp5-redir b/examples/printer-accounting/hp5-redir
new file mode 100644 (file)
index 0000000..98c2b72
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+#
+# $Source: /data/src/mirror/cvs/samba/examples/printer-accounting/hp5-redir,v $
+# $Id: hp5-redir,v 1.1 1996/07/23 03:30:56 samba-bugs Exp $
+#
+# 0 == stdin  == docuement
+# 1 == stdout == printer
+# 2 == stderr == logging
+#
+# With redirection to another valid /etc/printcap entry
+#
+
+umask(002);
+
+# -w132 -l66 -i0 -n pkelly -h master.fcp.oypi.com /var/log/lp-acct
+require "getopts.pl";
+&Getopts("w:l:i:n:h:");
+
+chomp($date = `date '+%Y-%m-%d.%T'`);
+
+($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+        $atime,$mtime,$ctime,$blksize,$blocks)
+ = stat(STDIN);
+
+# send to the real printer now.
+open(P, "|lpr -Pmgmt0") || die "Can't print to hp5-real ($!)\n";
+$cnt = 0;
+while (sysread(STDIN, $buf, 10240)) {
+        print P $buf;
+       # this is ugly, but it gives the approx in pages.  We
+       # don't print graphics, so ...  There must be a better way :)
+        $cnt += ($buf =~ /^L/g);
+}
+close(P);
+
+$acct = shift;
+if (open(ACCT, ">>$acct")) {
+        print ACCT "$date $opt_n $opt_h $size $cnt\n";
+        close(ACCT);
+} else {
+        warn "Err: Can't account for it ($!)\n";
+        warn "Log: $date $opt_n $opt_h $size $cnt\n";
+}
diff --git a/examples/printer-accounting/lp-acct b/examples/printer-accounting/lp-acct
new file mode 100644 (file)
index 0000000..3fe45f8
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+#
+# $Source: /data/src/mirror/cvs/samba/examples/printer-accounting/lp-acct,v $
+# $Id: lp-acct,v 1.1 1996/07/23 03:30:56 samba-bugs Exp $
+#
+# 0 == stdin  == docuement
+# 1 == stdout == printer
+# 2 == stderr == logging
+#
+# Regular, with no redirection
+#
+
+umask(002);
+
+# -w132 -l66 -i0 -n pkelly -h master.fcp.oypi.com /var/log/lp-acct
+require "getopts.pl";
+&Getopts("w:l:i:n:h:");
+
+chomp($date = `date '+%Y-%m-%d.%T'`);
+
+($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+        $atime,$mtime,$ctime,$blksize,$blocks)
+ = stat(STDIN);
+
+$cnt = 0;
+while (sysread(STDIN, $buf, 10240)) {
+        print $buf;
+        $cnt += ($buf =~ /^L/g);
+}
+
+$acct = shift;
+if (open(ACCT, ">>$acct")) {
+        print ACCT "$date $opt_n $opt_h $size $cnt\n";
+        close(ACCT);
+} else {
+        warn "Err: Can't account for it ($!)\n";
+        warn "Log: $date $opt_n $opt_h $size $cnt\n";
+}
diff --git a/examples/printer-accounting/printcap b/examples/printer-accounting/printcap
new file mode 100644 (file)
index 0000000..976005a
--- /dev/null
@@ -0,0 +1,22 @@
+# HP5N - Accounting entry
+#
+# This file calls the filter, hp5-redir to do the numbers and then
+# is redirected to the real entry, mgmt0, which is a remote HP5N
+# on the LAN with it's own IP number.
+#
+hp5:lp=/dev/lp1:\
+        :sd=/usr/spool/lpd/hp5-acct:\
+        :lf=/var/log/lp-err:\
+        :af=/var/log/lp/hp5:\
+        :if=/usr/local/bin/lp/hp5-redir:\
+        :sh:sf:\
+        :mx#0:
+
+# HP5N - Real printer location
+mgmt0:\
+        :rm=hp5.fcp.oypi.com:\
+        :rp=hp5.fcp.oypi.com:\
+        :sd=/usr/spool/lpd/mgmt0:\
+        :sh:sf:\
+        :mx#0:
+