[statistiques.py] Gestion un peu plus optimisee des serveurs et de l'IPv6
Ignore-this: d20c17251d227d1793b47559a860fcd5 darcs-hash:20110917172948-ddb99-4f46b6136ae6590303a634aaf8080bfa7a8abd31.gz
This commit is contained in:
parent
073e48d1d4
commit
6dcaa5fe10
1 changed files with 28 additions and 29 deletions
|
@ -21,7 +21,7 @@ sys.path.append('/usr/scripts/surveillance')
|
||||||
import config
|
import config
|
||||||
import smtplib
|
import smtplib
|
||||||
import socket
|
import socket
|
||||||
import time, random, md5
|
import time, random, hashlib
|
||||||
import netaddr
|
import netaddr
|
||||||
from analyse import stats
|
from analyse import stats
|
||||||
from affich_tools import tableau
|
from affich_tools import tableau
|
||||||
|
@ -72,8 +72,10 @@ WHERE
|
||||||
GROUP BY ip_crans
|
GROUP BY ip_crans
|
||||||
ORDER BY somme DESC"""
|
ORDER BY somme DESC"""
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
|
data_upload = curseur.fetchall()
|
||||||
|
|
||||||
liste_upload = tableau(data = [ (l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn(str(l[0])))
|
liste_upload = tableau(data = [ (l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn(str(l[0])))
|
||||||
for l in curseur.fetchall()
|
for l in data_upload
|
||||||
if int(l[1]) > 100*1024*1024
|
if int(l[1]) > 100*1024*1024
|
||||||
and l[0] not in (ips_serveurs + ips_proxys)],
|
and l[0] not in (ips_serveurs + ips_proxys)],
|
||||||
titre = ['upload', 'download', 'proto', 'machine'],
|
titre = ['upload', 'download', 'proto', 'machine'],
|
||||||
|
@ -97,36 +99,33 @@ 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], socket.getfqdn(str(l[0]))]
|
liste_exemptes = tableau(data = [[l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn(str(l[0]))]
|
||||||
for l in curseur.fetchall()],
|
for l in curseur.fetchall()],
|
||||||
titre = ['upload', 'download', 'machine'],
|
titre = ['upload', 'download', 'proto', 'machine'],
|
||||||
largeur = [10, 10, 30],
|
largeur = [10, 10, 10, 30],
|
||||||
format = ['o', 'o', 's'],
|
format = ['o', 'o', 's', 's'],
|
||||||
alignement = ['d', 'd', 'c']).encode('iso-8859-15')
|
alignement = ['d', 'd', 'c', 'c']).encode('iso-8859-15')
|
||||||
|
|
||||||
# FIXME : super lent de faire pour chaque IP de serveur
|
# Upload des serveurs :
|
||||||
# Upload des serveurs :
|
|
||||||
#######################
|
#######################
|
||||||
liste_serveurs = []
|
liste_serveurs = []
|
||||||
for IP in (ips_serveurs + ips_proxys):
|
for l in data_upload:
|
||||||
hostname = socket.getfqdn(IP)
|
if l[0] in (ips_serveurs + ips_proxys) and l[1] + l[2] > 10*1024*1024:
|
||||||
requete = """SELECT sum(upload), sum(download)
|
liste_serveurs.append([l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn(l[0])])
|
||||||
FROM upload
|
# requete = """SELECT sum(upload), sum(download)
|
||||||
WHERE
|
# FROM upload
|
||||||
ip_crans='%s'
|
# WHERE
|
||||||
AND date > timestamp 'now' - interval '1 day' """ % IP
|
# ip_crans='%s'
|
||||||
curseur.execute(requete)
|
# AND date > timestamp 'now' - interval '1 day' """ % IP
|
||||||
traffic = curseur.fetchone()
|
# curseur.execute(requete)
|
||||||
|
# traffic = curseur.fetchone()
|
||||||
# On ne compte pas le serveur si le trafic est petit
|
# On ne compte pas le serveur si le trafic est petit
|
||||||
if traffic == [None, None] or traffic[0] + traffic[1] < 10*1024*1024:
|
|
||||||
continue
|
|
||||||
liste_serveurs.append([traffic[0], traffic[1], hostname])
|
|
||||||
|
|
||||||
liste_serveurs = tableau(data = liste_serveurs,
|
liste_serveurs = tableau(data = liste_serveurs,
|
||||||
titre = ['upload','download','serveur'],
|
titre = ['upload', 'download', 'proto', 'serveur'],
|
||||||
largeur = [10, 10, 30],
|
largeur = [10, 10, 10, 30],
|
||||||
format = ['o','o','s'],
|
format = ['o', 'o', 's', 's'],
|
||||||
alignement = ['d','d','c']).encode('iso-8859-15')
|
alignement = ['d', 'd', 'c', 'c']).encode('iso-8859-15')
|
||||||
|
|
||||||
|
|
||||||
# statistiques des gros uploads depuis les serveurs
|
# statistiques des gros uploads depuis les serveurs
|
||||||
|
@ -190,7 +189,7 @@ 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
|
requete = """SELECT * FROM (SELECT ip_src,count(ip_src) as compteur FROM flood
|
||||||
WHERE date > timestamp 'now' - interval '1 day'
|
WHERE date > timestamp 'now' - interval '1 day'
|
||||||
GROUP BY ip_src ORDER BY compteur DESC)
|
GROUP BY ip_src ORDER BY compteur DESC)
|
||||||
AS tous
|
AS tous
|
||||||
WHERE tous.compteur>'%s' LIMIT 30""" % config.virus.flood
|
WHERE tous.compteur>'%s' LIMIT 30""" % config.virus.flood
|
||||||
|
@ -256,7 +255,7 @@ Content-Type: text/plain; charset="iso-8859-15"
|
||||||
|
|
||||||
*Gros uploads des serveurs* (sila et sable sont exemptés totalement)
|
*Gros uploads des serveurs* (sila et sable sont exemptés totalement)
|
||||||
|
|
||||||
%(gros_uploads_des_serveurs)s
|
%(gros_uploads_des_serveurs)s
|
||||||
|
|
||||||
*Statistiques de trafic des serveurs*
|
*Statistiques de trafic des serveurs*
|
||||||
|
|
||||||
|
@ -290,11 +289,11 @@ Content-Type: text/plain; charset="iso-8859-15"
|
||||||
|
|
||||||
%(liste_exemptes)s
|
%(liste_exemptes)s
|
||||||
|
|
||||||
--
|
--
|
||||||
statistiques.py
|
statistiques.py
|
||||||
"""
|
"""
|
||||||
|
|
||||||
uuid = md5.md5(str(long(time.time() * 1000)) +
|
uuid = hashlib.md5(str(long(time.time() * 1000)) +
|
||||||
str(long(random.random()*100000000000000000L))).hexdigest()
|
str(long(random.random()*100000000000000000L))).hexdigest()
|
||||||
corps = message % { 'From': expediteur,
|
corps = message % { 'From': expediteur,
|
||||||
'To': destinataire,
|
'To': destinataire,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue