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 |