Xref: utzoo comp.mail.uucp:6385 comp.lang.perl:4990 alt.sources:3624 Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!wuarchive!mit-eddie!uw-beaver!ssc-vax!bcsaic!vince From: vince@bcsaic.UUCP (Vince Skahan) Newsgroups: comp.mail.uucp,comp.lang.perl,alt.sources Subject: Re: Log summaries Message-ID: <45432@bcsaic.UUCP> Date: 18 Apr 91 15:19:21 GMT References: <1991Apr16.070654.15375@pronto.mh.nl> Organization: Boeing Aerospace and Electronics - Seattle Lines: 152 In article <1991Apr16.070654.15375@pronto.mh.nl> Johan Vromans writes: > >> Has anybody written a program (Perl?) to parse UUCP log files, to >> give an idea how much each UUCP connection's being used, and for how >> long? > Here's a HDB UUCP report generator in sh and awk.... it should scream if you run it through a2p and use split rather than awk-isms #------------------------- cut here -------------------------------- #!/bin/sh STATS="/usr/spool/uucp/.Admin/xferstats" TMP="/tmp/hdb.tmp" cat $STATS | sort > $TMP # sort by system then process awk '{ # # ------------ sample data for incoming information ------------ # #dsinc!uucp M (11/9-7:37:59) (C,701,1) [sio1] <- 475 / 5.933 secs, 80 bytes/sec # # ----------- sample data for outgoing information -------------- # #dsinc!bcs212 M (11/9-8:02:16) (C,828,1) [sio1] -> 341 / 0.450 secs, 757 bytes/sec # #------------------------------------------------------------------- BEGIN{ # initialize NAME to nothing NAME=" " # print header printf ("\n Summary of UUCP Statistics\n") printf ("\n Total Incoming Outgoing Percent\n") printf (" Bytes Bytes/sec Bytes/sec Bytes/sec Outgoing\n") printf (" ----- ---------- --------- --------- --------\n") } # step through the data file # outcoming data indicated by -> # ingoing data indicated by <- # find which system by /systemname/ # incoming /<-/ { time_in = time_in + $9 bytes_in = bytes_in + $7 total_intime = total_intime + $9 total_inbytes = total_inbytes + $7 } #outgoing /->/ { time_out = time_out + $9 bytes_out = bytes_out + $7 total_outtime = total_outtime + $9 total_outbytes = total_outbytes + $7 } { if ( $1 != NAME ) { if ( NAME != " " ) { printf ("%15s %7d %7d %11d %11d %13d \n", NAME, host_bytes, host_rate, host_inrate, host_outrate, host_pct_out); } NAME = $1 host_intime = 0 host_inbytes = 0 host_outtime = 0 host_outbytes = 0 host_time = 0 host_bytes = 0 host_inrate = 0 host_outrate = 0 host_pct_out = 0 } if (( ( $1 == NAME ) || ( $1 == " " ) )) { if ( $6 == "<-" ) { host_intime = host_intime + $9 host_inbytes = host_inbytes + $7 } else { host_outtime = host_outtime + $9 host_outbytes = host_outbytes + $7 } host_time = host_intime + host_outtime host_bytes = host_inbytes + host_outbytes if ( host_time > 0 ) { host_rate = host_bytes/host_time } if ( host_intime > 0 ) { host_inrate = host_inbytes/host_intime } if ( host_outtime > 0 ) { host_outrate = host_outbytes/host_outtime } if (host_bytes > 0 ) { host_pct_out = host_outbytes * 100 / host_bytes } } } END { # summarize, print the last guy, and print the totals pretty printf ("%15s %7d %7d %11d %11d %13d \n", NAME, host_bytes, host_rate, host_inrate, host_outrate, host_pct_out) total_bytes = total_inbytes + total_outbytes total_time = total_intime + total_outtime if ( total_time > 0 ) { total_rate = total_bytes/total_time } if ( total_intime > 0 ) { total_inrate = total_inbytes/total_intime } if ( total_outtime > 0 ) { total_outrate = total_outbytes/total_outtime } if (( (total_inbytes > 0 ) || ( total_outbytes > 0 ) )) { total_bytes = total_inbytes + total_outbytes total_time = total_intime + total_outtime total_pct_out = total_outbytes * 100 / total_bytes printf("\n") printf(" total %7d %7d %11d %11d %13d \n", total_bytes, total_rate, total_inrate, total_outrate, total_pct_out); printf("\n") } }' $TMP rm $TMP -- Vince Skahan vince@atc.boeing.com ...uw-beaver!bcsaic!vince (what is there in the construction of mobile homes that seems to attract tornadoes ??? )