152 lines
4.7 KiB
Python
Executable file
152 lines
4.7 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')
|
|
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 DISTINCT ip_crans FROM avertis_virus WHERE date>timestamp 'now' - interval '1 day'"
|
|
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
|