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