Subversion Repositories wimsdev

Rev

Rev 4295 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 reyssat 1
#! /bin/sh
4295 bpr 2
# logs and referer of documents, user and class connections in wims/log/...
3
# Now must be called from wimslogd and housekeep.daily.
3 reyssat 4
 
5
if [ "$site_accounting" != "yes" ]; then exit; fi
6
 
7
# working directory. Changeable.
8
cd `dirname $0`/..
9
wims_home=`pwd`
10
tmpdir=$wims_home/tmp/log
11
cd log
12
 
13
if [ -z "$1" ]; then workday=`date -d "22 hours ago" '+%Y%m%d'`; else workday=$1;fi
14
 
15
test=`grep $workday account/00access.act | awk '{print $1}'`
16
if [ ! -z "$test" ]; then echo Accounting already done for $workday.; exit; fi
17
 
17113 guerimand 18
# log date for using newccsum version  
19
if [ ! -f ccaccount/newccsum ]; then
20
  echo "$workday" > ccaccount/newccsum;
21
fi;
22
 
3 reyssat 23
cat access.log* | grep $workday'\.' | grep -v 'devel/' | grep -v 'error' >$tmpdir/acctmp.log
24
 
25
cc=`grep -c . $tmpdir/acctmp.log`
26
cd=`cat $tmpdir/acctmp.log | awk '{print $3}' | sort | uniq | grep -c .`
27
cs=`cat session.log* | grep -c $workday`
28
if [ $cd -gt 0 ]; then
29
  avcc=`expr $cc / $cd`
30
  avcs=`expr $cs / $cd`
31
else
32
  avcc=0
33
  avcs=0
34
fi
35
echo "$workday  $cc     $cs     $cd     $avcc   $avcs" >>account/00access.act
36
 
37
ml=`cat $tmpdir/acctmp.log | awk 'length($5) < 39 {print $5}' | grep / | sort | uniq`
38
 
39
for i in $ml
40
do
41
 cc=`grep -c $i $tmpdir/acctmp.log`
42
 cd=`grep $i $tmpdir/acctmp.log | awk '{print $3}' | sort | uniq | grep -c .`
43
 j=`echo $i | tr '/' '@'`
44
 if [ $cd -gt 0 ]; then
45
   avcc=`expr $cc / $cd`
46
 else
47
   avcc=0
48
 fi
49
 echo "$workday $cc     $cd     $avcc" >>account/$j
50
done
51
 
52
# Document accounting
53
mkdir -p account/doc
54
list=`cat modules/adm/doc.* |\
55
 awk '/^'$workday'\./ && $4=="read" {print $5" "$3}' |\
56
 grep -v '/' |\
57
 awk '$1<100000 {print}' | sort -n`
58
tot=`echo "$list" | awk '{print $1}' | sort -n | uniq`
59
for d in $tot
60
do
61
 cc=`echo "$list" | grep -c '^'$d`
62
 cd=`echo "$list" | grep '^'$d | awk '{print $2}' | sort | uniq | grep -c .`
63
 if [ $cd -gt 0 ]; then
64
  avcd=`expr $cc / $cd`
65
 else
66
  avcd=0
67
 fi
68
 echo "$workday $cc     $cd     $avcd" >>account/doc/$d
69
done
70
cc=`echo "$list" | grep -c .`
71
cd=`echo "$list" | awk '{print $2}' | sort | uniq | grep -c .`
72
if [ $cd -gt 0 ]; then
73
  avcc=`expr $cc / $cd`
74
else
75
  avcc=0
76
fi
77
echo "$workday  $cc     $cd     $avcc" >>account/doc/0all
78
 
79
# clear unwanted module accounts
827 bpr 80
rm -f account/home account/adm@* account/devel@* account/classes@* account/help@* account/light >/dev/null 2>&1
3 reyssat 81
 
286 guerimand 82
# exit
3 reyssat 83
 
84
# Now referer logs.
85
 
86
cat /tmp/referer-home.log | sort | uniq | grep 'http://' | grep -v 'wims\.unice\.fr' | sed 's!http://!!g' | awk -F '#' '{print $1}' >>referer.log
87
echo >/tmp/referer-home.log
88
 
89
cat referer.log* | grep $workday | awk '{print $3"              "$4}' \
90
        | sort | uniq | sort -k 1 >$tmpdir/acctmp.log
91
 
92
grep -v '??' $tmpdir/acctmp.log >referer/refuniq.log
93
a=`grep -c '??' $tmpdir/acctmp.log`
94
echo "$workday  $a" >>referer/refauto.cnt
95
 
96
sed 's!?!/!g' referer/refuniq.log | awk -F/ '{print $1"/"$2}' > referer/refstem.log
97
awk -F/ '{print $1}' referer/refstem.log >referer/refsite.log
98
 
99
for s in stem uniq site
100
do
101
 cat referer/ref$s.log | tr '\?' ' ' | awk '{print $2}' | uniq -c | sort -nr \
102
        | awk '{print '$workday'" "$1"  "$2}' >> referer/ref$s.cnt
103
done
104
 
105
rm -f $tmpdir/acctmp.log
106
 
107
month=`date -d $workday '+%m'`
108
day=`date -d $workday '+%d'`
109
year=`date -d $workday '+%Y'`
110
 
111
awk 'BEGIN {a=0.0};
112
        substr($1,1,4)=="'$month$day'" {a=a+$3};
113
        END {printf "'$year$month$day' %4d\n",int(a/0.288+0.5)};
114
        ' load-$year$month >>account/00load.avg
115
 
116
# user and class connection time accounting
117
 
118
ccsum_outdir=ccaccount
119
ccsum_date=$workday
120
 
121
rm -f $tmpdir/cc.log 2>/dev/null
122
[ -f $ccsum_outdir/done ] && grep '^'$ccsum_date $ccsum_outdir/done >/dev/null && exit
123
 
124
cat access.log access.log.old* 2>/dev/null | grep '^'$ccsum_date'.*,' | sort >$tmpdir/cc.log
125
if [ ! -s $tmpdir/cc.log ]; then exit; fi
126
 
127
export ccsum_outdir ccsum_date
128
../bin/ccsum $tmpdir/cc.log
129
rm -f $tmpdir/cc.log
130