[statistiques.py] On compte tous les serveurs (+ nettoyage)
darcs-hash:20090313223637-ddb99-927ffb4899a7528b9f14af9fd61af8c5f2fc3b3f.gz
This commit is contained in:
parent
63a8882dbc
commit
b25bb68689
1 changed files with 51 additions and 35 deletions
|
@ -2,9 +2,10 @@
|
||||||
# -*- encoding: iso-8859-15 -*-
|
# -*- encoding: iso-8859-15 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Script d'envoi des statistiques des déconnections et du traffic de la journée à disconnect@
|
Script d'envoi des statistiques des déconnections
|
||||||
|
et du traffic de la journée à disconnect@
|
||||||
|
|
||||||
Copyright (C) Xavier Pessoles - Étienne Chové
|
Copyright (C) Xavier Pessoles - Étienne Chové - Michel Blockelet
|
||||||
Licence : GPLv2
|
Licence : GPLv2
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -23,6 +24,7 @@ import socket
|
||||||
import time, random, md5
|
import time, random, md5
|
||||||
from analyse import stats
|
from analyse import stats
|
||||||
from affich_tools import tableau
|
from affich_tools import tableau
|
||||||
|
from iptools import AddrInNet
|
||||||
from ldap_crans import AssociationCrans
|
from ldap_crans import AssociationCrans
|
||||||
|
|
||||||
# Fonction retournant l'hote quand c'est possible
|
# Fonction retournant l'hote quand c'est possible
|
||||||
|
@ -33,16 +35,15 @@ def gethostname(s):
|
||||||
return s
|
return s
|
||||||
|
|
||||||
# Liste des IP des serveurs
|
# Liste des IP des serveurs
|
||||||
serveurs_ips = (
|
serveurs_ips = [x.ip() for x in AssociationCrans().machines()
|
||||||
'138.231.136.10', '138.231.136.1', '138.231.136.3', '138.231.136.4',
|
if x.nom() not in [u'sila.crans.org', u'sable.crans.org']]
|
||||||
'138.231.136.7', '138.231.136.8', '138.231.136.9', '138.231.136.11',
|
|
||||||
'138.231.136.101', '138.231.136.98', '138.231.136.102' )
|
|
||||||
|
|
||||||
###############################
|
##############################
|
||||||
# Ouverture des connections : #
|
# Ouverture des connexions : #
|
||||||
###############################
|
##############################
|
||||||
|
|
||||||
pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans')
|
pgsql = PgSQL.connect(host='/var/run/postgresql',
|
||||||
|
database='filtrage', user='crans')
|
||||||
curseur = pgsql.cursor()
|
curseur = pgsql.cursor()
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
|
@ -93,7 +94,8 @@ WHERE
|
||||||
GROUP BY ip_crans
|
GROUP BY ip_crans
|
||||||
ORDER BY somme DESC"""
|
ORDER BY somme DESC"""
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
liste_exemptes = tableau(data = [ [l[1], l[2], gethostname(str(l[0])) ] for l in curseur.fetchall() ],
|
liste_exemptes = tableau(data = [[l[1], l[2], gethostname(str(l[0]))]
|
||||||
|
for l in curseur.fetchall()],
|
||||||
titre = ['upload', 'download', 'machine'],
|
titre = ['upload', 'download', 'machine'],
|
||||||
largeur = [10, 10, 30],
|
largeur = [10, 10, 30],
|
||||||
format = ['o', 'o', 's'],
|
format = ['o', 'o', 's'],
|
||||||
|
@ -106,13 +108,14 @@ liste_serveurs = []
|
||||||
for IP in serveurs_ips:
|
for IP in serveurs_ips:
|
||||||
hostname = gethostname(IP)
|
hostname = gethostname(IP)
|
||||||
requete = """SELECT sum(upload), sum(download)
|
requete = """SELECT sum(upload), sum(download)
|
||||||
FROM upload
|
FROM upload
|
||||||
WHERE
|
WHERE
|
||||||
ip_crans='%s'
|
ip_crans='%s'
|
||||||
AND date > timestamp 'now' - interval '1 day' """ % IP
|
AND date > timestamp 'now' - interval '1 day' """ % IP
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
traffic = curseur.fetchone()
|
traffic = curseur.fetchone()
|
||||||
if traffic == [None, None]:
|
# On ne compte pas le serveur si le traffic est petit
|
||||||
|
if traffic == [None, None] or traffic[0] + traffic[1] < 10*1024*1024:
|
||||||
continue
|
continue
|
||||||
liste_serveurs.append([traffic[0], traffic[1], hostname])
|
liste_serveurs.append([traffic[0], traffic[1], hostname])
|
||||||
|
|
||||||
|
@ -125,7 +128,9 @@ liste_serveurs = tableau(data = liste_serveurs,
|
||||||
|
|
||||||
# statistiques des gros uploads depuis les serveurs
|
# statistiques des gros uploads depuis les serveurs
|
||||||
###################################################
|
###################################################
|
||||||
gros_uploads_des_serveurs = stats(ip_crans=[x.ip() for x in AssociationCrans().machines() if x.nom() not in [u'sila.crans.org']], show=['ip_crans', 'ip_ext'], upload_mini=50, show_limit=100).encode('iso-8859-15')
|
gros_uploads_des_serveurs = stats(ip_crans=serveurs_ips,
|
||||||
|
show=['ip_crans', 'ip_ext'], upload_mini=50,
|
||||||
|
show_limit=100).encode('iso-8859-15')
|
||||||
|
|
||||||
############################
|
############################
|
||||||
# Statistiques virus/p2p : #
|
# Statistiques virus/p2p : #
|
||||||
|
@ -141,11 +146,16 @@ for IP in infections:
|
||||||
hostname = gethostname(IP)
|
hostname = gethostname(IP)
|
||||||
liste_virus.append(["%s" % (str(hostname))])
|
liste_virus.append(["%s" % (str(hostname))])
|
||||||
|
|
||||||
liste_virus = tableau(liste_virus, titre=['machine'], largeur=[30]).encode('iso-8859-15')
|
liste_virus = tableau(liste_virus,
|
||||||
|
titre=['machine'], largeur=[30]).encode('iso-8859-15')
|
||||||
|
|
||||||
# Machines ayant fait des attaques virus dans la journée :
|
# Machines ayant fait des attaques virus dans la journée :
|
||||||
##########################################################
|
##########################################################
|
||||||
requete = "SELECT * FROM (SELECT ip_src,count(ip_src) as compteur FROM virus WHERE date > timestamp 'now' - interval '1 day' group by ip_src order by compteur desc) AS tous WHERE tous.compteur>'%s' limit 30" % config.virus.virus
|
requete = """SELECT * FROM (SELECT ip_src,count(ip_src) as compteur FROM virus
|
||||||
|
WHERE date > timestamp 'now' - interval '1 day'
|
||||||
|
GROUP BY ip_src ORDER BY compteur DESC)
|
||||||
|
AS tous
|
||||||
|
WHERE tous.compteur>'%s' LIMIT 30""" % config.virus.virus
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
liste_virus2 = []
|
liste_virus2 = []
|
||||||
for IP, compteur in curseur.fetchall():
|
for IP, compteur in curseur.fetchall():
|
||||||
|
@ -159,7 +169,11 @@ liste_virus2 = tableau(data = liste_virus2,
|
||||||
|
|
||||||
# Machines ayant fait de attaques flood dans la journée :
|
# Machines ayant fait de attaques flood dans la journée :
|
||||||
#########################################################
|
#########################################################
|
||||||
requete = "SELECT * FROM (SELECT ip_src,count(ip_src) as compteur FROM flood WHERE date > timestamp 'now' - interval '1 day' group by ip_src order by compteur desc) AS tous WHERE tous.compteur>'%s' limit 30" % config.virus.flood
|
requete = """SELECT * FROM (SELECT ip_src,count(ip_src) as compteur FROM flood
|
||||||
|
WHERE date > timestamp 'now' - interval '1 day'
|
||||||
|
GROUP BY ip_src ORDER BY compteur DESC)
|
||||||
|
AS tous
|
||||||
|
WHERE tous.compteur>'%s' LIMIT 30""" % config.virus.flood
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
liste_virus3 = []
|
liste_virus3 = []
|
||||||
for IP, compteur in curseur.fetchall():
|
for IP, compteur in curseur.fetchall():
|
||||||
|
@ -173,20 +187,20 @@ liste_virus3 = tableau(data = liste_virus3,
|
||||||
|
|
||||||
# Machines ayant utilisé des protocoles P2P dans la journée :
|
# Machines ayant utilisé des protocoles P2P dans la journée :
|
||||||
#############################################################
|
#############################################################
|
||||||
requete = "SELECT ip_src, nom, compteur, max(date) FROM \
|
requete = """SELECT ip_src, nom, compteur, max(date) FROM
|
||||||
(SELECT ip_src,nom,count(ip_src) as compteur \
|
(SELECT ip_src,nom,count(ip_src) as compteur
|
||||||
FROM p2p INNER JOIN protocole_p2p ON p2p.id_p2p=protocole_p2p.id_p2p \
|
FROM p2p INNER JOIN protocole_p2p ON p2p.id_p2p=protocole_p2p.id_p2p
|
||||||
WHERE p2p.date > timestamp 'now' - interval '1 day' \
|
WHERE p2p.date > timestamp 'now' - interval '1 day'
|
||||||
GROUP BY ip_src,nom) \
|
GROUP BY ip_src,nom)
|
||||||
AS tous \
|
AS tous
|
||||||
LEFT JOIN \
|
LEFT JOIN
|
||||||
(SELECT * FROM avertis_p2p \
|
(SELECT * FROM avertis_p2p
|
||||||
WHERE date > timestamp 'now' - interval '1 day')\
|
WHERE date > timestamp 'now' - interval '1 day')
|
||||||
AS avertis \
|
AS avertis
|
||||||
ON ip_src=ip_crans \
|
ON ip_src=ip_crans
|
||||||
WHERE tous.compteur>5 \
|
WHERE tous.compteur>5
|
||||||
GROUP BY ip_src, nom, compteur \
|
GROUP BY ip_src, nom, compteur
|
||||||
ORDER BY 3 DESC"
|
ORDER BY 3 DESC"""
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
liste_p2p = []
|
liste_p2p = []
|
||||||
for IP, protocole, compteur, blackliste in curseur.fetchall():
|
for IP, protocole, compteur, blackliste in curseur.fetchall():
|
||||||
|
@ -198,7 +212,9 @@ for IP, protocole, compteur, blackliste in curseur.fetchall():
|
||||||
'*%d*' % compteur,
|
'*%d*' % compteur,
|
||||||
'*%d*' % config.p2p.limite[protocole]])
|
'*%d*' % config.p2p.limite[protocole]])
|
||||||
else:
|
else:
|
||||||
liste_p2p.append([hostname, protocole, compteur, config.p2p.limite[protocole]])
|
liste_p2p.append([hostname, protocole,
|
||||||
|
compteur, config.p2p.limite[protocole]])
|
||||||
|
|
||||||
liste_p2p = tableau(data = liste_p2p,
|
liste_p2p = tableau(data = liste_p2p,
|
||||||
titre = ['machine', 'protocole', 'nombre', 'limite'],
|
titre = ['machine', 'protocole', 'nombre', 'limite'],
|
||||||
largeur = [32, 14, 10, 8],
|
largeur = [32, 14, 10, 8],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue