webalizer_ 2.05 KB
Newer Older
1
#!/usr/bin/env python
Xavier Lagorce's avatar
Xavier Lagorce committed
2
# -*- coding: utf-8 -*-
3

Xavier Lagorce's avatar
Xavier Lagorce committed
4
# Représentation des navigateurs utilisés
5 6 7 8 9

import sys, commands, string, re
from time import strftime
from operator import add

Xavier Lagorce's avatar
Xavier Lagorce committed
10
# On prend l'argument pour définir la table à analyser
11 12
SITE = sys.argv[0].split('_')[1]

13 14 15 16
# nom de la machine
import socket
HOSTNAME = socket.gethostname()

17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
# On traite le fichier de webalizer correspondant
FILE = "/var/www/webalizer/%s/webalizer.current" % SITE

f = open(FILE, 'r')
lines = f.readlines()
f.close()

navigateurs = {}

agent = False
for line in lines :
    #print line
    if "# -agents-" in line : agent = True
    if "# End Of Table - agents" in line : break
    if agent : 
        if line [:2] == "0 " : navigateurs[nom]=int(line[2:])
        else : nom = line.strip()
        
total = reduce(add, navigateurs.values())

usage = {}
for nav in navigateurs.keys() :
39
    pourcentage = navigateurs[nav]*100.0/total
40 41 42
    if pourcentage > 1 :
        usage[nav] = pourcentage
        
43
reste = 100.0 - reduce(add, usage.values())
44 45 46 47 48 49 50

try :
    arg = sys.argv[1]
except :
    arg = ''
    
if arg == "config" :
51
    print 'host_name web.%s' % HOSTNAME
52 53
    print 'graph_category %s' % SITE
    print 'graph_title http://%s.crans.org' % SITE
54 55
    print 'graph_args --base 1000 -r --lower-limit 0 --upper-limit 100'
    print 'graph_scale no'
56 57 58 59
    print 'graph_args --base 1000 --lower-limit 0'
    print 'graph_vlabel % des visites'
    for key in usage.keys() :
        nom = key
60
        for char in [' ','_','-','/','\\',':',';','.','+','(',')','!','"','\'','@'] :
61
            nom = nom.replace(char, '')
62
        print '%s.label %s' % (nom, key[:20])
63 64 65 66 67 68 69 70 71 72
        if usage.keys().index(key) == 0 :
            print '%s.draw AREA' % nom
        else :
            print '%s.draw STACK' % nom
    print 'reste.label Autres'
    print 'reste.draw STACK'

else :
    for key in usage.keys() :
        nom = key
73
        for char in [' ','_','-','/','\\',':',';','.','+','(',')','!','"','\'','@'] :
74
            nom = nom.replace(char, '')
75 76
        print '%s.value %.2f' % (nom, usage[key])
    print 'reste.value %.2f' % reste
77