diff --git a/surveillance/statistiques.py b/surveillance/statistiques.py index b2fd246c..d949155e 100755 --- a/surveillance/statistiques.py +++ b/surveillance/statistiques.py @@ -12,6 +12,8 @@ sys.path.append('/usr/scripts/gestion') from config import p2p import smtplib import socket +from analyse import stats + ############################### # Ouverture des connections : # @@ -34,14 +36,13 @@ 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)) + 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 : ################### @@ -50,32 +51,32 @@ 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)) + 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)) - - + 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 depuis %s" % hostname + 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 DISTINCT ip_crans FROM avertis_virus " @@ -83,15 +84,15 @@ curseur.execute(requete) infections = curseur.fetchall() liste_virus="" for i in range(1,len(infections)): - IP=infections[i][0] - print IP - try: - hostname = socket.gethostbyaddr("%s"%IP)[0] - except socket.herror: - continue - liste_virus+="%s\n"%(str(hostname)) + IP=infections[i][0] + print 'Machine infectée %s' % IP + try: + hostname = socket.gethostbyaddr("%s"%IP)[0] + except socket.herror: + continue + 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'" @@ -99,14 +100,32 @@ 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] - requete = "SELECT COUNT(ip_src) from p2p where date > timestamp 'now' - interval '1 day' and ip_src='%s'"%IP - curseur.execute(requete) - paquets=curseur.fetchall() - liste_p2p+="%10s\t%20s\t%s\n"%(str(protocole),str(hostname),str(paquets[0][0])) - + IP=p2p[i][0] + protocole = p2p[i][1] + hostname = socket.gethostbyaddr("%s"%IP)[0] + requete = "SELECT COUNT(ip_src) from p2p where date > timestamp 'now' - interval '1 day' and ip_src='%s'"%IP + curseur.execute(requete) + paquets=curseur.fetchall() + liste_p2p+="%10s\t%20s\t%s\n"%(str(protocole),str(hostname),str(paquets[0][0])) + + +# statistiques des gros uploads depuis les serveurs +################################################### +# liste des seveur à controler : +# - nom du serveur +# - adresse IP +# - upload mini critique +# - nombre max de lignes à afficher +serveurs = [['Zamok','138.231.136.1',30,20], + ['Rouge','138.231.136.3',30,20], + ['Sila','138.231.136.10',1000,20]] + +gros_uploads_des_serveurs = "" +for serveur in serveurs : + titre = "Gros upload depuis %s" % serveur[0] + gros_uploads_des_serveurs += titre + '\n' + '-'*len(titre) + '\n\n' + gros_uploads_des_serveurs += stats(ip_crans=serveur[1],group=['ip_ext'],upload_mini=serveur[2],limit=serveur[3]).encode('iso-8859-15') + gros_uploads_des_serveurs += "\n\n" ############# # Message : # @@ -122,7 +141,7 @@ Bilan des d Machines infectées pour virus : ------------------------------ +------------------------------- %(liste_virus)s @@ -133,7 +152,7 @@ Machines utilisant des protocoles P2P (Nb de paquets par 24 heures) : Statistiques d'upload -- download : ---------------------------------- +----------------------------------- %(liste_upload)s @@ -145,19 +164,23 @@ Statistiques d'upload -- download des serveurs : ------------------------------------------------ %(liste_serveurs)s + +%(gros_uploads_des_serveurs)s + -- statistiques.py """ #print p2p.tag 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, - 'seuil':5} + 'To':destinataire, + 'liste_upload':liste_upload, + 'liste_p2p':liste_p2p, + 'liste_virus':liste_virus, + 'liste_exemptes':liste_exemptes, + 'liste_serveurs':liste_serveurs, + 'gros_uploads_des_serveurs':gros_uploads_des_serveurs, + 'seuil':5} #corps = corps.encode('iso 8859-15') mail.sendmail('disconnect@crans.org','disconnect@crans.org',corps)