#! /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') import smtplib import socket ############################### # Ouverture des connections : # ############################### pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans') pgsql.autocommit = True curseur = pgsql.cursor() mail = smtplib.SMTP('localhost') ########################### # 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() liste_upload="" for i in range(0,len(hard)): IP=hard[i][0] hostname = socket.gethostbyaddr("%s"%IP)[0] upload = round((hard[i][1]),2) download = round((hard[i][2]),2) liste_upload += "%10s%10s\t%s\n"%(str(upload),str(download),str(hostname)) liste_upload # 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() liste_exemptes="" for i in range(0,len(exemptes)): IP=exemptes[i][0] hostname = socket.gethostbyaddr("%s"%IP)[0] upload=round(exemptes[i][1],2) download=round(exemptes[i][2],2) liste_exemptes=liste_exemptes+"%10s%10s\t%s\n"%(str(upload),str(download),str(hostname)) # Upload des serveurs : ####################### liste_serveurs="" for i in (10,1,3,4,7,8,9,11): IP='138.231.136.'+str(i) hostname = socket.gethostbyaddr("%s"%IP)[0] 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) 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 hour'" curseur.execute(requete) infections = curseur.fetchall() liste_virus="" for i in range(1,len(infections)): IP=infections[i][0] hostname = socket.gethostbyaddr("%s"%IP)[0] 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() liste_p2p="" for i in range(0,len(p2p)): IP=p2p[i][0] protocole = p2p[i][1] hostname = socket.gethostbyaddr("%s"%IP)[0] 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