#!/usr/bin/perl
$space .= ' ';
$count = 0;
$count1 = 0;
$count2 = 0;
$count3 = 0;
$count4 = 0;
$count5 = 0;
$flag = 0;
$count6 = 0;
$count7 = 0;
$count8 = 0;
$c1 = 0;
$check = 0;
$check1 = 0;
$check3 = 0;
$check4 = 0;
$countlast = 0;
$today = 0;
$num{$user} = 0;
$whatever = 0;
#-----------------------------------------------------------
print("Choose 1. Today's login only.\n");
print(" 2. Yesterday's login only\n");
print(" 3. The day before yesterday's login only.\n");
print(" 4. Everything on detail file.\n");
$amy = getc;
$amy = 4;
while ($check==0)
{
if (($amy == 1) || ($amy == 2) ||($amy ==3) ||($amy ==4)){
$check = 1};
if (($amy != 1) && ($amy != 2) && ($amy != 3) && ($amy != 4))
{
$amy = getc;
};
}
#------------------------------------------------------------
system("date > yeathisisjustatempfile");
open (yan,'./yeathisisjustatempfile');
while(<yan>){
foreach $_ (split (/[ \t\n]+/))
{
$c1 ++;
if ($c1 == 2) {
$month = $_;
}
if ($c1 == 3)
{
$date = $_;
if ($amy == 2){
$date = $_ -1;
}
if ($amy == 3){
$date = $_ -2;
}
$datesave = $date;
# print("date is $date\n");
# sleep 3;
# print("datesave is $datesave\n");
# sleep 3;
# print("datsave is $datesave\n");
# sleep 3;
}
}
if ($datesave == 1)
{
$space .= ' ';
}
if ($datesave == 2)
{
$space .= ' ';
}
if ($datesave == 3)
{
$space .= ' ';
}
if ($datesave == 4)
{
$space .= ' ';
}
if ($datesave == 5)
{
$space .= ' ';
}
if ($datesave == 6)
{
$space .= ' ';
}
if ($datesave == 7)
{
$space .= ' ';
}
if ($datesave == 8)
{
$space .= ' ';
}
if ($datesave == 9)
{
$space .= ' ';
}
$datereal .= $month .+ $space .+ $datesave;
#print("datereal is $datereal");
# sleep 3;
}
system ("rm yeathisisjustatempfile");
#open
(yan,'/usr/adm/radacct/pm30.wwisp.com.116.218.205.in-addr.arpa/detail');
#open(yan,'./1.96.detail');
$/ = '';
while(<>){
if ($amy==4 || (/$datereal/ && (($amy == 1) ||($amy == 2) ||($amy
== 3)))) {
next if /Acct-Session-Id = "00000000"/;
if (/Acct-Status-Type = Stop/) {
$num{$user}=$num{$user}+1;
if (/Acct-Session-Id = "([^"]+)"/) {
$id = $1;
if ($seen{$id}++) {
$dup++;
next;
}
} else {
$err{'No ID'}++;
next;
}
if (/User-Name = "([^"]+)"/) {
$user = $1;
if (/Acct-Session-Time = (\d+)/) {
$elapsed = $1;
if ($elapsed > 0) {
$used{$user} += $elapsed;
}
}
}
}
}
}
#print "tweas";
#print "# $dup duplicates\n" if $dup;
print "# $err{'No ID'} stop records without Acct-Session-ID\n" if
$err{'No Id'};
for $user (sort keys %used) {
$totaltime = $totaltime + $used{$user};
$usercount = $usercount + 1;
# print ("Total Time is $totaltime\n");
# print ("User count is $usercount\n");
$average = $totaltime/$usercount;
# print ("Average is $average\n");
printf "%-16s\t%s",$user,&hms($used{$user});
printf " %2d\n",$num{$user};
}
#$totaltime = &hms($totaltime);
#$average = &hms($average);
#print ("Total Time is $totaltime\n");
#print ("Total user is $usercount\n");
#print ("Average is $average\n");
sub hms {
local($h,$m);
local ($s) = shift(@_);
$m = int($s / 60);
$s = $s % 60;
$h = int($m / 60);
$m = $m % 60;
sprintf("%4d:%02d:%02d",$h,$m,$s);
}