File:  [LON-CAPA] / loncom / debugging_tools / user_login_count.pl
Revision 1.2: download - view: text, annotated - select for diffs
Thu Apr 7 01:50:49 2005 UTC (19 years, 1 month ago) by albertel
Branches: MAIN
CVS tags: HEAD
- add ability to ignore a regexp of users

    1: use strict;
    2: use File::Find;
    3: use POSIX qw(strftime);
    4: use lib '/home/httpd/lib/perl/';
    5: use LONCAPA::Configuration;
    6: use Date::Manip;
    7: 
    8: my $start_time=&UnixDate("Aug 30th 00:00:00 2004","%s");
    9: my @counts=('1','10','100','1000','10000','100000','250000');
   10: my @ignored_users=('^itds\d+$');
   11: 
   12: 
   13: sub only_user_activitylog_files {
   14:     print (join("\n",@_));
   15:     return 1;
   16: }
   17: 
   18: my %data;
   19: my $numusers;
   20: sub process_activitylog_file {
   21:     if ($File::Find::dir=~m|/\d/\d/\d/|) { return; }
   22:     if ($_ ne 'activity.log') {	return; }
   23:     open(FILE,"<$File::Find::name");
   24:     $numusers++;
   25:     my $user=(split('/',$File::Find::dir))[-1];
   26:     foreach my $expr (@ignored_users) {
   27: 	if ($user=~/$expr/) { print("\nignoring $user\n"); return; }
   28:     }
   29:     while (my $line=<FILE>) {
   30: 	if ($line !~ /Login/) { next; }
   31: 	my ($date)=split(':',$line,2);
   32: 	if ($date > $start_time) { $data{$user}++; }
   33:     }
   34:     if ($numusers%100 == 0) {
   35: 	print "\b\b\b\b\b\b\b\b\b\b\b\b\b\bDid $user";
   36:     }
   37: }
   38: 
   39: sub print_data {
   40:     my $total_login=0;
   41:     my %byday;
   42:     print("\n");
   43:   my $i=0;
   44:     foreach my $key (sort {$data{$b} <=> $data{$a}} (keys(%data))) {
   45:         $i++;
   46:         print "$key -> $data{$key}\n";
   47:         if ($i>50) { last; }
   48:     }
   49: 
   50: }
   51: 
   52: $|=1;
   53: sub main {
   54:     my $perlvar=LONCAPA::Configuration::read_conf('loncapa.conf');
   55:     find(
   56:          {
   57: #          preprocess => \&only_user_activitylog_files,
   58: #          wanted     => \&print_filename,
   59: #          wanted     => \&log_metadata,
   60: 	     wanted     => \&process_activitylog_file,
   61: 	 }, 
   62:          $perlvar->{'lonUsersDir'}.'/'.$perlvar->{'lonDefDomain'});
   63:     &print_data();
   64: }
   65: &main();
   66: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>