#! /usr/bin/env python # -*- encoding: iso-8859-15 -*- ########################### # Import des commmandes : # ########################### import commands import sys from pyPgSQL import PgSQL sys.path.append('/usr/scripts/gestion') from ldap_crans import crans_ldap import smtplib ############################### # Ouverture des connections : # ############################### pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans') pgsql.autocommit = True curseur = pgsql.cursor() mail = smtplib.SMTP('localhost') ldap=crans_ldap() ########################### # Statistiques d'upload : # ########################### # Adhérents avertis : ##################### requete = "SELECT ip_crans,sum(upload)/1024/1024 as somme,sum(download)/1024/1024 FROM upload WHERE ip_crans IN (SELECT ip_crans FROM avertis_upload where hard='1' or soft='1') and date > timestamp 'now' - interval '1 day' GROUP BY ip_crans order by somme" curseur.execute(requete) hard = curseur.fetchall() for i in range(0,len(hard)): IP=hard[i][0] machine = ldap.search('ipHostNumber=%s' % IP)['machine'][0] hostname = machine.nom() upload = round((hard[i][1]),2) download=round((hard[i][2]),2) if i==0 : liste_upload="%10s%10s\t%s\n"%(str(upload),str(download),str(hostname)) else : liste_upload=liste_upload+"%10s%10s\t%s\n"%(str(upload),str(download),str(hostname)) # Upload exemptés : ################### requete = "SELECT ip_crans,sum(upload)/1024/1024 AS somme , sum(download)/1024/1024 FROM upload WHERE ip_crans IN ( SELECT ip_crans from exemptes) and date > timestamp 'now' - interval '1 day' GROUP BY ip_crans order by somme" curseur.execute(requete) exemptes = curseur.fetchall() for i in range(0,len(exemptes)): IP=exemptes[i][0] machine = ldap.search('ipHostNumber=%s' % IP)['machine'][0] hostname = machine.nom() upload=round(exemptes[i][1],2) download=round(exemptes[i][2],2) if i==0 : liste_exemptes="%10s%10s\t%s\n"%(str(upload),str(download),str(hostname)) else : liste_exemptes=liste_exemptes+"%10s%10s\t%s\n"%(str(upload),str(download),str(hostname)) # Upload des serveurs : ####################### for i in (10,1,3,4,5,7,8,9,11): IP='138.231.136.'+str(i) machine = ldap.search('ipHostNumber=%s' % IP)['machine'][0] hostname = machine.nom() requete = "SELECT sum(upload)/1024/1024,sum(download)/1024/1024 FROM upload WHERE ip_crans='%s' AND date > timestamp 'now' - interval '1 day' "%IP curseur.execute(requete) traffic=curseur.fetchall() try : round(traffic[0][0],2) except TypeError: print "Pas d'upload ou download" else : upload=round(traffic[0][0],2) download=round(traffic[0][1],2) if i==10 : liste_serveurs="%10s%10s\t%s\n"%(str(upload),str(download),str(hostname)) else : liste_serveurs=liste_serveurs+"%10s%10s\t%s\n"%(str(upload),str(download),str(hostname)) # Machines infectées : ###################### requete = "SELECT ip_crans FROM avertis_virus WHERE date>timestamp 'now' - interval '1 day'" curseur.execute(requete) infections = curseur.fetchall() for i in range(1,len(infections)): IP=infections[i][0] machine = ldap.search('ipHostNumber=%s' % IP)['machine'][0] hostname = machine.nom() try : print len(liste_virus) except NameError: liste_virus="%s%s\n"%('--','--') else : if i==0 : liste_virus="%s\n"%(str(hostname)) else : liste_virus=liste_virus+"%s\n"%(str(hostname)) # Machines utilisant des protocoles P2P : ######################################### requete = "SELECT ip_crans,protocole FROM avertis_p2p WHERE date>timestamp 'now' - interval '1 day'" curseur.execute(requete) p2p = curseur.fetchall() for i in range(0,len(p2p)): IP=p2p[i][0] protocole = p2p[i][1] machine = ldap.search('ipHostNumber=%s' % IP)['machine'][0] hostname = machine.nom() try : print len(liste_p2p) except NameError: liste_p2p="%s%20s\n"%('--','--') else : if i==0 : liste_p2p="%9s\t%s\n"%(str(protocole),str(hostname)) else : liste_p2p=liste_p2p+"%9s\t%s\n"%(str(protocole),str(hostname)) ############# # Message : # ############# expediteur = "pessoles@crans.org" destinataire = "disconnect@crans.org" message="""From: %(From)s To: %(To)s Subject: MESSAGE DE TEST : Statistiques des dernières 24h Bilan des déconnexions : ======================== Machines infectées pour virus : ----------------------------- %(liste_virus)s Machines utilisant des protocoles de pair à pair : ------------------------------------------------ %(liste_p2p)s Statistiques d'upload -- download : --------------------------------- %(liste_upload)s Statistiques d'upload -- download des machines exemptées : ---------------------------------------------------------- %(liste_exemptes)s Statistiques d'upload -- download des serveurs : ------------------------------------------------ %(liste_serveurs)s -- statistiques.py """ corps = message %{'From':expediteur, 'To':destinataire, 'liste_upload':liste_upload, 'liste_p2p':liste_p2p, 'liste_virus':liste_virus, 'liste_exemptes':liste_exemptes, 'liste_serveurs':liste_serveurs} #corps = corps.encode('iso 8859-15') mail.sendmail('pessoles@crans.org','disconnect@crans.org',corps) #print corps