Subversion Repositories wimsdev

Rev

Rev 15810 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. #! /bin/sh
  2. # this script get user by class and level each week and write in wimshome/log/stat/stat.class and wimshome/log/class/stat.user
  3. # format is date K3 E1 E2 E3 E4 E5 E6 H1 H2 H3 H4 H5 H6 U1 U2 U3 U4 U5 G
  4.  
  5.  
  6. # Home directory of wims.
  7. cd `dirname $0`/..
  8. WIMS_HOME=`pwd`
  9.  
  10. today=`date '+%Y%m%d'`
  11. weekday=`date '+%w'`
  12. if [ ! -d $WIMS_HOME/log/stat/ ]; then mkdir $WIMS_HOME/log/stat; fi;
  13. #if [ $weekday -ne 1 -a -e $WIMS_HOME/log/stat/today ]; then exit; fi;
  14.  
  15. if [ -e $WIMS_HOME/log/stat/server.geoloc ]; then
  16.   servertown=`cut -d, -f1 $WIMS_HOME/log/stat/server.geoloc`;
  17.   servergeoloc=`cut -d, -f2-3 $WIMS_HOME/log/stat/server.geoloc`;
  18. else
  19.   servertown=""
  20.   servergeoloc=""
  21. fi;
  22.  
  23. rm -f $WIMS_HOME/log/stat/today;
  24.  
  25. cd $WIMS_HOME/log/classes
  26. cpt=0
  27. for cls in [0-9]*
  28. do
  29.   if [ $cls -gt 9999 ]; then
  30.     level=`awk -F'=' '$1=="!set class_level" {print $2; exit}' $cls/.def`;
  31.     if [ "$level" != "" ]; then
  32.       nuser=`cat $cls/.userlist | grep -c '^:'`
  33.       # class with less than 5 users not count
  34.       if [ $nuser -ge 5 ]; then
  35.         location=`awk -F'=' '$1=="!set class_location" {print $2; exit}' $cls/.def`;
  36.         geoloc=`awk -F'=' '$1=="!set class_geoloc" {print $2; exit}' $cls/.def`;
  37.         echo "$cls,$level,$nuser,$location,$geoloc" >> $WIMS_HOME/log/stat/today;
  38.         if [ "$geoloc" != "" -a "$geoloc"!="$servergeoloc" ]; then
  39.           echo "$location,$geoloc" >> $WIMS_HOME/log/stat/location.tmp;
  40.         else
  41.           cpt=`expr $cpt + 1`
  42.         fi;
  43.       fi;
  44.     fi;
  45.   fi;
  46. done;
  47. c=`awk -F ',' 'BEGIN {  t["K3"]=0
  48.  t["E1"]=0
  49.  t["E2"]=0
  50.  t["E3"]=0
  51.  t["E4"]=0
  52.  t["E5"]=0
  53.  t["E6"]=0
  54.  t["H1"]=0
  55.  t["H2"]=0
  56.  t["H3"]=0
  57.  t["H4"]=0
  58.  t["H5"]=0
  59.  t["H6"]=0
  60.  t["U1"]=0
  61.  t["U2"]=0
  62.  t["U3"]=0
  63.  t["U4"]=0
  64.  t["U5"]=0
  65.  t["G"]=0} {if ($2 in t) t[$2]++}
  66.  END {print t["K3"],t["E1"],t["E2"],t["E3"],t["E4"],t["E5"],t["E6"],t["H1"],t["H2"],t["H3"],t["H4"],t["H5"],t["H6"],t["U1"],t["U2"],t["U3"],t["U4"],t["U5"],t["G"]}' $WIMS_HOME/log/stat/today;`
  67. old=`tail -n 1 $WIMS_HOME/log/stat/stat.class | cut -d" " -f2-20`;
  68. if [ "$old" != "$c" ]; then
  69.   echo ":$today $c" >> $WIMS_HOME/log/stat/stat.class;
  70. fi;
  71. c=`awk -F ',' 'BEGIN {t["K3"]=0
  72.  t["E1"]=0
  73.  t["E2"]=0
  74.  t["E3"]=0
  75.  t["E4"]=0
  76.  t["E5"]=0
  77.  t["E6"]=0
  78.  t["H1"]=0
  79.  t["H2"]=0
  80.  t["H3"]=0
  81.  t["H4"]=0
  82.  t["H5"]=0
  83.  t["H6"]=0
  84.  t["U1"]=0
  85.  t["U2"]=0
  86.  t["U3"]=0
  87.  t["U4"]=0
  88.  t["U5"]=0
  89.  t["G"]=0} {if ($2 in t) t[$2]+=$3}
  90.  END {print t["K3"],t["E1"],t["E2"],t["E3"],t["E4"],t["E5"],t["E6"],t["H1"],t["H2"],t["H3"],t["H4"],t["H5"],t["H6"],t["U1"],t["U2"],t["U3"],t["U4"],t["U5"],t["G"]}' $WIMS_HOME/log/stat/today;`
  91. old=`tail -n 1 $WIMS_HOME/log/stat/stat.user | cut -d" " -f2-20`;
  92. if [ "$old" != "$c" ]; then
  93.   echo ":$today $c" >> $WIMS_HOME/log/stat/stat.user;
  94. fi;
  95.  
  96. # --------------- make geolocalisation of classe index
  97. cd $WIMS_HOME/log/stat;
  98. rm -f class.geoloc
  99. if [ -e location.tmp ]; then
  100.   # group identical town and geoloc
  101.   sort location.tmp | uniq -c -ii | sed "s/^\ *//g" | awk -F" " '{ORS=" "
  102.  print $1","
  103.  for(i=2;i<=NF;i++) print $i
  104.  ORS="\n"
  105.  print ""}' | awk -F"," '{print ":"$2","$1","$3","$4}' > class.geoloc;
  106.   rm -f location.tmp;
  107. fi;
  108. # every class not geolocalized are localized in the server town localization (if define).
  109. if [ "$servergeoloc" != "" -a $cpt -gt 0 ]; then
  110.   echo ":$servertown,$cpt,$servergeoloc" >> class.geoloc;
  111. fi;
  112.