From 133d5bc92d4bf029b1dabc2b0f6bf137c3100c04 Mon Sep 17 00:00:00 2001 From: chove Date: Tue, 29 Nov 2005 22:41:15 +0100 Subject: [PATCH] la suite, on prend en compte la table dump darcs-hash:20051129214115-4ec08-9a25e3264ad9fc7097b6098bba7971563407e502.gz --- surveillance/deconnexion.py | 50 ++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/surveillance/deconnexion.py b/surveillance/deconnexion.py index 9229a3c0..39fab1a7 100755 --- a/surveillance/deconnexion.py +++ b/surveillance/deconnexion.py @@ -65,26 +65,26 @@ ldap = crans_ldap() # Vérification de l'upload et du download # ########################################### -requete = "SELECT ip_crans,round(sum(upload)/1024/1024) AS total FROM upload WHERE upload>download AND date>timestamp 'now' - interval '1 day' AND date<'now' AND NOT EXISTS ( SELECT 1 FROM exemptes WHERE upload.ip_crans<<=exemptes.ip_crans and upload.ip_ext<<=exemptes.ip_dest) GROUP BY ip_crans ORDER BY total desc" +requete_template = "SELECT ip_crans,round(sum(upload)/1024/1024) AS total FROM %(table)s WHERE upload>download AND date>timestamp 'now' - interval '1 day' AND date<'now' AND NOT EXISTS ( SELECT 1 FROM exemptes WHERE %(table)s.ip_crans<<=exemptes.ip_crans and %(table)s.ip_ext<<=exemptes.ip_dest) GROUP BY ip_crans ORDER BY total desc" + +# table générale d'upload +requete = requete_template % {'table':'upload'} +curseur.execute(requete) +uploadeurs_general = curseur.fetchall() + +# table temporaire d'upload +requete = requete_template % {'table':'dump'} curseur.execute(requete) uploadeurs_dump = curseur.fetchall() -requete = "SELECT ip_crans,round(sum(upload)/1024/1024) AS total FROM dump WHERE upload>download AND NOT EXISTS ( SELECT 1 FROM exemptes WHERE upload.ip_crans<<=exemptes.ip_crans and upload.ip_ext<<=exemptes.ip_dest) GROUP BY ip_crans ORDER BY total desc" -curseur.execute(requete) -uploadeurs_dump += curseur.fetchall() -uploadeurs_dump.sort() - - - - -#for i in range(0,len(uploadeurs_dump)-1): -# if uploadeurs_dump[i][0]==uploadeurs_dump[i+1][0]: -# uploadeurs_dump[i][1]=uploadeurs_dump[i][1]+uploadeurs_dump[i+1][1] -# uploadeurs_dump.pop(i+1) - -requete = "SELECT round(sum(upload)/1024/1024) AS total,ip_crans FROM upload WHERE upload>download AND date>timestamp 'now' - interval '1 day' AND date<'now' AND NOT EXISTS ( SELECT 1 FROM exemptes WHERE upload.ip_crans<<=exemptes.ip_crans and upload.ip_ext<<=exemptes.ip_dest) GROUP BY ip_crans ORDER BY total desc" -curseur.execute(requete) -uploadeurs = curseur.fetchall() +# concaténation des résultats +uploadeurs = {} +for i in uploadeurs_general + uploadeurs_dump: + if i[0] in uploadeurs: + uploadeurs[i[0]]+=float(i[1]) + else: + uploadeurs[i[0]]=float(i[1]) +uploadeurs=uploadeurs.items() # Table des avertis ################### @@ -102,7 +102,7 @@ avertiss = [ x[0] for x in curseur.fetchall() ] # Vérification : ################ -for elupload, IP in uploadeurs : +for IP, elupload in uploadeurs: # On regarde si c'est de l'upload hard if elupload >= upload.hard : @@ -114,7 +114,12 @@ for elupload, IP in uploadeurs : # Objets LDAP ############# - machine = ldap.search('ipHostNumber=%s' % IP,'w')['machine'][0] + machine = ldap.search('ipHostNumber=%s' % IP,'w')['machine'] + if not machine: + print 'IP non trouvée (%s)'%IP + continue + machine=machine[0] + hostname = machine.nom() proprio = machine.proprietaire() mid = machine.id() @@ -162,7 +167,12 @@ for elupload, IP in uploadeurs : # On récupère les informations de LDAP ###################################### - machine = ldap.search('ipHostNumber=%s' % IP )['machine'][0] + machine = ldap.search('ipHostNumber=%s' % IP,'w')['machine'] + if not machine: + print 'IP non trouvée (%s)'%IP + continue + + machine=machine[0] hostname = machine.nom() proprio = machine.proprietaire().mail()