UUCP Accounting (source files)
Bill Irwin
bill at twg.bc.ca
Wed Feb 20 19:24:51 AEST 1991
bill at twg.bc.ca (Bill Irwin) writes:
}I use an awk script I got from the net. It produces output like
}so:
}System Xfers Bytes rec Bytes xmt Connect Avg Xf Avg rec Avg xmt
}van-bc 6 806928 0 1:01:55 134488 217 0
}TOTALS 6 806928 0 1:01:55
}TTY Connect % Data %
}[ttyi1P] 01:01:55 100 806928 100%
}This report is not very full because the daily report has already
}run and the log files rotated, but you get the idea. If this
}could be of use to you, mail me and I will mail it to you.
Boy did I get a dump of requests in my mailbox for this! Here
are the sources. One, "uucp_traffic" is just a shell script run
manually. It will accept a file name as an argument and analyze
it instead of the default. If you store your uucp xferstats into
a monthly file, this file could be given as the argument and you
would see the month's activity.
The script "uucp_daily" is run from cron about 11:45 pm. It
processes the days uucp xferstats file, mails the output and
appends the file to a monthly log.
The other file is the awk program that actually does the analysis
and produces the report.
Enjoy.
---- Cut Here and unpack ----
#!/bin/sh
# This is a shell archive (shar 3.32)
# made 02/20/1991 08:15 UTC by bill at TWG
# Source directory /tmp/uucp.awk
#
# existing files WILL be overwritten
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 3168 -rw-rw-r-- uucp.awk
# 266 -rwxrwxr-x uucp_daily
# 233 -rwxrwxr-x uucp_traffic
#
if touch 2>&1 | fgrep 'amc' > /dev/null
then TOUCH=touch
else TOUCH=true
fi
# ============= uucp.awk ==============
echo "x - extracting uucp.awk (Text)"
sed 's/^X//' << 'SHAR_EOF' > uucp.awk &&
X# USAGE: awk -f syslog_awk /usr/spool/uucp/SYSLOG
X# An awk script for printing a pretty report of UUCP activities from the
X# UUCP SYSLOG - Erik E. Fair October 2, 1984
X#
X# v7 UUCP
X$4 == "received" {
X sysname[$2] = $2;
X by_rec[$2] += $6;
X sec_rec[$2] += $8;
X sys_xf[$2] ++;
X}
X#
X# 4.2 BSD UUCP
X$5 == "received" {
X sysname[$2] = $2;
X by_rec[$2] += $7;
X sec_rec[$2] += $9;
X sys_xf[$2] ++;
X}
X#
X# System V UUCP
X$6 == "<-" {
X $1 = substr($1, 1, (index($1, "!") - 1));
X sysname[$1] = $1;
X by_rec[$1] += $7;
X sec_rec[$1] += $9;
X sys_xf[$1] ++;
X ttytime[$5] += $9;
X ttyxfer[$5] += $7;
X}
X#
X# v7 UUCP
X$4 == "sent" {
X sysname[$2] = $2;
X by_xmt[$2] += $6;
X sec_xmt[$2] += $8;
X sys_xf[$2] ++;
X}
X#
X# 4.2 BSD UUCP
X$5 == "sent" {
X sysname[$2] = $2;
X by_xmt[$2] += $7;
X sec_xmt[$2] += $9;
X sys_xf[$2] ++;
X}
X#
X# System V UUCP
X$6 == "->" {
X $1 = substr($1, 1, (index($1, "!") - 1));
X sysname[$1] = $1;
X by_xmt[$1] += $7;
X sec_xmt[$1] += $9;
X sys_xf[$1] ++;
X ttytime[$5] += $9;
X ttyxfer[$5] += $7;
X}
XEND {
X#
X# print a report header
X printf("System Xfers Bytes rec Bytes xmt Connect Avg Xf Avg rec Avg xmt\n")
X for(i in sysname) {
X#
X# sort report by most connect time (selection sort)
X first = 0;
X for(j in sysname) {
X if (sys_xf[j] > 0) {
X tmp1 = sec_xmt[j];
X tmp2 = sec_rec[j];
X# Stupid AWK bug - needs a simple expression
X time = (tmp1 + tmp2);
X if (time > first) {
X first = time;
X sys = sysname[j];
X }
X }
X }
X#
X# 4.2 BSD awk seems to have problems. This check should not be necessary.
X# Oddly enough, this problem also shows up in System V. WHY???
X if (sys_xf[sys] != 0) {
X#
X# time for some bean counting
X tmp1 = sec_xmt[sys];
X tmp2 = sec_rec[sys];
X# Stupid AWK bug - needs a simple expression
X time = (tmp1 + tmp2);
X hours = time / 3600;
X sec = time % 3600;
X min = sec / 60;
X sec %= 60;
X tot_xf += sys_xf[sys];
X tot_by_rec += by_rec[sys];
X tot_by_xmt += by_xmt[sys];
X tot_time += time;
X#
X# protect myself against mathematical crime (divide by zero)
X if (sec_rec[sys] == 0)
X sec_rec[sys] = 1;
X if (sec_xmt[sys] == 0)
X sec_xmt[sys] = 1;
X#
X# print a pretty system report (god what an awful printf format...)
X printf("%-8s%8d%11d%11d%4d:%.2d:%.2d%8d%9d%9d\n", \
Xsysname[sys], sys_xf[sys], by_rec[sys], by_xmt[sys], hours, min, sec, \
X((by_rec[sys] + by_xmt[sys]) / sys_xf[sys]), \
X(by_rec[sys] / sec_rec[sys]), \
X(by_xmt[sys] / sec_xmt[sys]));
X#
X# make certain we will not see this system again... (selection sort)
X sys_xf[sys] = 0;
X }
X }
X#
X# calculate time split for total time (and print totals [*shudder*])
X hours = tot_time / 3600;
X sec = tot_time % 3600;
X min = sec / 60;
X sec %= 60;
X printf("\n%-8s%8d%11d%11d%4d:%.2d:%.2d\n", \
X "TOTALS", tot_xf, tot_by_rec, tot_by_xmt, hours, min, sec);
X
X
X#
X# tty usage report
X#
X printf("\n\n\nTTY\t\tConnect\t\t\%");
X printf("\tData\t\t\%\n");
X for(i in ttytime) {
X
X hours = ttytime[i] / 3600;
X sec = ttytime[i] % 3600;
X min = sec / 60;
X sec %= 60;
X
X printf("%-10s\t%02d:%02d:%02d\t%3d\%\t%8d\t%3d\%\n",
X i,hours,min,sec,ttytime[i]*100/tot_time,
X ttyxfer[i],ttyxfer[i]*100/(tot_by_rec+tot_by_xmt));
X
X }
X}
X
SHAR_EOF
$TOUCH -am 0219235491 uucp.awk &&
chmod 0664 uucp.awk ||
echo "restore of uucp.awk failed"
set `wc -c uucp.awk`;Wc_c=$1
if test "$Wc_c" != "3168"; then
echo original size 3168, current size $Wc_c
fi
# ============= uucp_daily ==============
echo "x - extracting uucp_daily (Text)"
sed 's/^X//' << 'SHAR_EOF' > uucp_daily &&
X:
X# Mail the daily UUCP activity and append the file to the
X# monthly log.
X
XSAGBIN=`cat /.SAGBIN`
Xawk -f $SAGBIN/uucp.awk /usr/spool/uucp/.Admin/xferstats | \
X mail -s "Daily UUCP Activity" UUCP
X
Xset `date`
XFile=$6$2
Xcd /usr/spool/uucp/.Admin
Xcat xferstats >> $File
SHAR_EOF
$TOUCH -am 0220001491 uucp_daily &&
chmod 0775 uucp_daily ||
echo "restore of uucp_daily failed"
set `wc -c uucp_daily`;Wc_c=$1
if test "$Wc_c" != "266"; then
echo original size 266, current size $Wc_c
fi
# ============= uucp_traffic ==============
echo "x - extracting uucp_traffic (Text)"
sed 's/^X//' << 'SHAR_EOF' > uucp_traffic &&
X:
X# Check the current day UUCP traffic by default or
X# the traffic from a named file.
X
XSAGBIN=`cat /.SAGBIN`
XFile=/usr/spool/uucp/.Admin/xferstats
Xif [ $# -gt 0 ]
Xthen
X File=/usr/spool/uucp/.Admin/$*
Xfi
Xawk -f $SAGBIN/uucp.awk $File
SHAR_EOF
$TOUCH -am 0219235391 uucp_traffic &&
chmod 0775 uucp_traffic ||
echo "restore of uucp_traffic failed"
set `wc -c uucp_traffic`;Wc_c=$1
if test "$Wc_c" != "233"; then
echo original size 233, current size $Wc_c
fi
exit 0
--
Bill Irwin - The Westrheim Group - Vancouver, BC, Canada
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
uunet!van-bc!twg!bill (604) 431-9600 (voice) | Your Computer
bill at twg.bc.ca (604) 430-4329 (fax) | Systems Partner
More information about the Comp.unix.admin
mailing list