scripts/surveillance/statistiques.py
pessoles db137d4ca3 Dplacement
darcs-hash:20050831233129-6d78a-2ef5f572a45e3e6178edeca255fbd1159444b780.gz
2005-09-01 01:31:29 +02:00

180 lines
5.9 KiB
Python
Executable file

#! /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