diff --git a/surveillance/analyse.py b/surveillance/analyse.py index 5c1e3dba..089f7f92 100755 --- a/surveillance/analyse.py +++ b/surveillance/analyse.py @@ -7,7 +7,7 @@ from pyPgSQL import PgSQL sys.path.append('/usr/scripts/gestion/') from affich_tools import tableau_ng -def stats (ip_crans, group=['ip_ext','port_crans','port_ext'], upload_mini=0, limit=10) : +def stats (ip_crans, group=['ip_ext','port_crans','port_ext'], upload_mini=0, limit=10, heures=24) : """ Retourne une chaine de caratères formatée avec le tableau de statistiques d'upload de l'ip fourni @@ -57,7 +57,7 @@ def stats (ip_crans, group=['ip_ext','port_crans','port_ext'], upload_mini=0, li # requete dans la base ###################### - requete = "SELECT * from ( SELECT %s FROM upload WHERE ip_crans='%s' AND date > timestamp 'now' - interval '1 day' GROUP BY %s ORDER BY upload DESC ) AS resultat_intemediaire WHERE upload>='%d' LIMIT %d;" % (','.join(select), ip_crans, ','.join(group), upload_mini*1024*1024, limit) + requete = "SELECT * from ( SELECT %s FROM upload WHERE ip_crans='%s' AND date > timestamp 'now' - interval '%d hours' GROUP BY %s ORDER BY upload DESC ) AS resultat_intemediaire WHERE upload>='%d' LIMIT %d;" % (','.join(select), ip_crans, heures, ','.join(group), upload_mini*1024*1024, limit) pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans') curseur = pgsql.cursor() @@ -92,6 +92,8 @@ Option fait partie des options suivantes : par défaut : -p ip_ext -p port_crans -p port_ext -u # : ne prend quee les entrées ou l'upload est supérieur à # par défaut : 0 +-t # : nombre d'heures à analyser + par défaut : 24 Exemples : sudo /usr/scripts/surveillance/analyse.py bilou.crans.org""" @@ -107,7 +109,7 @@ Exemples : # parsage des arguments ####################### try : - opts, args = getopt.getopt(sys.argv[1:],'g:l:u:') + opts, args = getopt.getopt(sys.argv[1:],'g:l:u:t:') except getopt.GetoptError,message : print message sys.exit(4) @@ -154,6 +156,18 @@ Exemples : sys.exit(4) break + # durée pour laquelle on compte l'upload + ######################################## + heures = 24 + for key,value in opts : + if key == '-t' : + try : + heures = int(value) + except : + print 'Le nombre d\'heures doit être un entier' + sys.exit(4) + break + # groupements ############# group = [ x[1] for x in opts if x[0] == '-g' and x[1] in ['ip_ext','port_crans','port_ext'] ] @@ -163,4 +177,4 @@ Exemples : # affichage du résultat ####################### - print stats(ip_crans, group, upload_mini, limit) + print stats(ip_crans, group, upload_mini, limit, heures)