Listing 1 | Listing
2 | Listing 3 | Listing
4 | Listing 5 | Listing
6 | Listing 7 | Listing 8 | Listing
9 | Listing 10 | Article
Listing 7 - detail.pl
#!/usr/bin/perl
# detail.pl 1.8 2001-02-05 12:31:45-05 news Exp
# quick anal of stat.detail member info
require "getopts.pl";
$OptionString = "suUG:SHL:pP";
&Getopts($OptionString) || &Usage;
# sanity check on options
$opt_H = 1 if (($opt_p || $opt_L) && !$opt_H);
$KB = 1024;
$MB = $KB * $KB;
$HdrStr = "endtime sec <-xover--> <--arts---> <--posts--> grp User\n";
$HdrNum = 0;
while (<>) {
@info = split;
# see if we only want part of the data
$Feed = $info[2];
next if (defined $opt_G && $Feed ne $opt_G);
# here was save connect info if asked
if ($opt_U) {
$usage{$info[0]}++;
$usage{$info[1]}--;
}
$et = $info[1] - $info[0];
@lt = localtime($info[1]);
$lt = sprintf "%02d:%02d:%02d", $lt[2], $lt[1], $lt[0];
$user = $info[5];
# drop refused connections
next if $user =~ m/^-@?/;
$user =~ s/\@prodigy.net//i;
$realm = $info[17];
unless ($opt_S) {
&PutHdr;
$OVsize = &FWbytes($info[7], 6);
$ARsize = &FWbytes($info[9], 8);
printf "%s %5d %4d %s %5d %s %3d %8d %4d %s@%s\n",
$lt, $et, $info[6], $OVsize, $info[8], $ARsize,
$info[14], $info[15], $info[16], $user, $realm
;
}
if ($opt_s || $opt_u) {
# count overviews
$T_ov_num = $info[6];
$T_ov_size = $info[7];
# count articles
$T_art_num = $info[8];
$T_art_size = $info[9];
# add to summaries
$S_ov_num += $T_ov_num;
$S_ov_size += $T_ov_size;
$S_art_num += $T_art_num;
$S_art_size += $T_art_size;
$S_groups += $info[16];
$S_post_num += $info[14];
$S_post_size += $info[15];
$S_conn_time += $et;
$S_conn_num++;
# keep by-user stats - some needed for summary
$U_ov_num{$user} += $T_ov_num;
$U_ov_size{$user} += $T_ov_size;
$U_art_num{$user} += $T_art_num;
$U_art_size{$user} += $T_art_size;
$U_groups{$user} += $info[16];
$U_conn_sec{$user} += $et;
$U_conn_num{$user}++;
if ($info[14]) {
$U_post_num{$user} += $info[14];
$U_post_size{$user} += $info[15];
}
}
}
print "\n" unless $opt_S;
# output summary stats
if ($opt_s) {
# new page if at end of page
print "\f" if ($opt_L && ($opt_L - $HdrNum) < 6);
print "Summary of usage\n\n" if $opt_H;
printf "%d overviews in %d groups, totalling %.1>
|