sycnhro des bases, c'est ce script qui fait l'analyse du dump

darcs-hash:20051207232528-4ec08-0b6f1ddf3a76a3723c6c906a5ac460a747fee27d.gz
This commit is contained in:
chove 2005-12-08 00:25:28 +01:00
parent e27e0eb50e
commit f533febce0

View file

@ -1,7 +1,6 @@
#! /usr/bin/env python #! /usr/bin/env python
# -*- encoding: iso-8859-15 -*- # -*- encoding: iso-8859-15 -*-
########################### ###########################
# Import des commmandes : # # Import des commmandes : #
########################### ###########################
@ -15,38 +14,42 @@ import iptools
from pyPgSQL import PgSQL from pyPgSQL import PgSQL
from time import gmtime,strftime,localtime from time import gmtime,strftime,localtime
sys.path.append('/usr/scripts/surveillance') sys.path.append('/usr/scripts/surveillance')
import strptime import strptime, config
# Définition de constantes : # Définition de constantes :
############################ ############################
reseau = config.NETs['all']
reseau = ["138.231.136.0/21", "138.231.148.0/22"]
# Ouverture de la base de données : # Ouverture de la base de données :
################################### ###################################
pgsql = PgSQL.connect(host='rouge.adm.crans.org', database='filtrage', user='crans') pgsql = PgSQL.connect(host='rouge.adm.crans.org', database='filtrage', user='crans')
pgsql.autocommit = True
################################################################# #################################################################
# Parser ler log de net-acct : /var/log/net-acct/net-acct.log : # # Parser ler log de net-acct : /var/log/net-acct/net-acct.log : #
################################################################# #################################################################
#On récupère en continu les log de net-account # On récupère en continu les log de net-account
# Les logs sont sous la forme : date | id(protocole) | ip_src | port_src | ip_dest | port_dest | octet transf
#netacct = os.popen("sh -c 'tail -F /var/log/ulog-acctd/account.log 2> /dev/null'")
netacct = os.popen("sh -c 'tail -F /var/log/net-acct/net-acct.log 2> /dev/null'") netacct = os.popen("sh -c 'tail -F /var/log/net-acct/net-acct.log 2> /dev/null'")
# Sélectionner le couple de ligne qui va bien (port_src_i=port_dest_i+1 et ip_src_i=ip_dest_i+1 # Sélectionner le couple de ligne qui va bien (port_src_i=port_dest_i+1 et ip_src_i=ip_dest_i+1
# Création d'un dictionnaire pour matcher les conversations # Création d'un dictionnaire pour matcher les conversations
precedent = {"ip_src":"0","ip_dest":"0","port_src":"0","port_dest":"0","donnees":0,"date":"0"}
precedent = {"ip_src":"0","ip_dest":"0","port_src":"0","port_dest":"0","donnees":0}
for log in netacct : for log in netacct :
# Découpage du log # Découpage du log
date,proto,ip_src,port_src,ip_dest,port_dest,donnees = log.split("\t")[0:-2] date,proto,ip_src,port_src,ip_dest,port_dest,donnees = log.split("\t")[0:-2]
# si on change de date, on analyse le dump et on commite
if precedent["date"] != date:
print 'dump (%s=>%s)'%(precedent["date"],date)
#os.system('/usr/scripts/surveillance/filtrage_dump.py')
print 'done'
pgsql.commit()
# ip_src,ip_dest,port_src,port_dest # ip_src,ip_dest,port_src,port_dest
proto = int(proto) proto = int(proto)
# Création d'un dictionnaire pour matcher les conversations # Création d'un dictionnaire pour matcher les conversations
actuel = {} actuel = {}
actuel["ip_src"]=ip_src actuel["ip_src"]=ip_src
@ -54,12 +57,10 @@ for log in netacct :
actuel["ip_dest"]=ip_dest actuel["ip_dest"]=ip_dest
actuel["port_dest"]=port_dest actuel["port_dest"]=port_dest
actuel["donnees"]=donnees actuel["donnees"]=donnees
# Test actuel["date"]=date
if actuel["ip_src"]==precedent["ip_dest"] \
and actuel["ip_dest"]==precedent["ip_src"] \
and actuel["port_src"]==precedent["port_dest"] \
and actuel["port_dest"]==precedent["port_src"] :
# on regarde si c'est le retour de la connection du dessus
if actuel["ip_src"]==precedent["ip_dest"] and actuel["ip_dest"]==precedent["ip_src"] and actuel["port_src"]==precedent["port_dest"] and actuel["port_dest"]==precedent["port_src"] :
# Remplissage de la base de données : # Remplissage de la base de données :
#################################### ####################################
@ -91,15 +92,7 @@ for log in netacct :
# Traitement dans la base SQL # Traitement dans la base SQL
date = strptime.syslog2pgsql(strftime("%b %d %H:%M:%S",localtime(int(date)))) date = strptime.syslog2pgsql(strftime("%b %d %H:%M:%S",localtime(int(date))))
curseur = pgsql.cursor() curseur = pgsql.cursor()
requete = "INSERT INTO upload (ip_crans,ip_ext,port_crans,port_ext,download,upload,date,id) VALUES ('%s','%s',%d,%d,%d,%d,'%s',%d)" % (ip_crans, requete = "INSERT INTO upload (ip_crans,ip_ext,port_crans,port_ext,download,upload,date,id) VALUES ('%s','%s',%d,%d,%d,%d,'%s',%d)" % (ip_crans,ip_ext,port_crans,port_ext,download,upload,date,proto)
ip_ext,
port_crans,
port_ext,
download,
upload,
date,
proto)
curseur.execute(requete) curseur.execute(requete)
precedent=actuel precedent=actuel