diff --git a/surveillance/statistiques.py b/surveillance/statistiques.py index 286a4ff1..70559b92 100644 --- a/surveillance/statistiques.py +++ b/surveillance/statistiques.py @@ -21,7 +21,7 @@ sys.path.append('/usr/scripts/surveillance') import config import smtplib import socket -import time, random, md5 +import time, random, hashlib import netaddr from analyse import stats from affich_tools import tableau @@ -72,8 +72,10 @@ WHERE GROUP BY ip_crans ORDER BY somme DESC""" curseur.execute(requete) +data_upload = curseur.fetchall() + liste_upload = tableau(data = [ (l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn(str(l[0]))) - for l in curseur.fetchall() + for l in data_upload if int(l[1]) > 100*1024*1024 and l[0] not in (ips_serveurs + ips_proxys)], titre = ['upload', 'download', 'proto', 'machine'], @@ -97,36 +99,33 @@ WHERE GROUP BY ip_crans ORDER BY somme DESC""" curseur.execute(requete) -liste_exemptes = tableau(data = [[l[1], l[2], socket.getfqdn(str(l[0]))] +liste_exemptes = tableau(data = [[l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn(str(l[0]))] for l in curseur.fetchall()], - titre = ['upload', 'download', 'machine'], - largeur = [10, 10, 30], - format = ['o', 'o', 's'], - alignement = ['d', 'd', 'c']).encode('iso-8859-15') + titre = ['upload', 'download', 'proto', 'machine'], + largeur = [10, 10, 10, 30], + format = ['o', 'o', 's', 's'], + alignement = ['d', 'd', 'c', 'c']).encode('iso-8859-15') -# FIXME : super lent de faire pour chaque IP de serveur -# Upload des serveurs : +# Upload des serveurs : ####################### liste_serveurs = [] -for IP in (ips_serveurs + ips_proxys): - hostname = socket.getfqdn(IP) - requete = """SELECT sum(upload), sum(download) - FROM upload - WHERE - ip_crans='%s' - AND date > timestamp 'now' - interval '1 day' """ % IP - curseur.execute(requete) - traffic = curseur.fetchone() +for l in data_upload: + if l[0] in (ips_serveurs + ips_proxys) and l[1] + l[2] > 10*1024*1024: + liste_serveurs.append([l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn(l[0])]) +# requete = """SELECT sum(upload), sum(download) +# FROM upload +# WHERE +# ip_crans='%s' +# AND date > timestamp 'now' - interval '1 day' """ % IP +# curseur.execute(requete) +# traffic = curseur.fetchone() # On ne compte pas le serveur si le trafic est petit - if traffic == [None, None] or traffic[0] + traffic[1] < 10*1024*1024: - continue - liste_serveurs.append([traffic[0], traffic[1], hostname]) liste_serveurs = tableau(data = liste_serveurs, - titre = ['upload','download','serveur'], - largeur = [10, 10, 30], - format = ['o','o','s'], - alignement = ['d','d','c']).encode('iso-8859-15') + titre = ['upload', 'download', 'proto', 'serveur'], + largeur = [10, 10, 10, 30], + format = ['o', 'o', 's', 's'], + alignement = ['d', 'd', 'c', 'c']).encode('iso-8859-15') # statistiques des gros uploads depuis les serveurs @@ -190,7 +189,7 @@ liste_virus2 = tableau(data = liste_virus2, # Machines ayant fait de attaques flood dans la journée : ######################################################### requete = """SELECT * FROM (SELECT ip_src,count(ip_src) as compteur FROM flood -WHERE date > timestamp 'now' - interval '1 day' +WHERE date > timestamp 'now' - interval '1 day' GROUP BY ip_src ORDER BY compteur DESC) AS tous WHERE tous.compteur>'%s' LIMIT 30""" % config.virus.flood @@ -256,7 +255,7 @@ Content-Type: text/plain; charset="iso-8859-15" *Gros uploads des serveurs* (sila et sable sont exemptés totalement) -%(gros_uploads_des_serveurs)s +%(gros_uploads_des_serveurs)s *Statistiques de trafic des serveurs* @@ -290,11 +289,11 @@ Content-Type: text/plain; charset="iso-8859-15" %(liste_exemptes)s --- +-- statistiques.py """ -uuid = md5.md5(str(long(time.time() * 1000)) + +uuid = hashlib.md5(str(long(time.time() * 1000)) + str(long(random.random()*100000000000000000L))).hexdigest() corps = message % { 'From': expediteur, 'To': destinataire,