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