1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
# -*- coding: utf-8 -*-
# modules nécessaires
from os import chdir
import MySQLdb as mdb
import sys
import datetime
# variables pour la BDD
serveur = ''
etat = ''
regle = ''
directive = ''
# répertoire où se trouve les logs
chdir("c:/Users/pidlas/Documents/rudder/")
def extract(log):
for ligne in log:
debut_date = ligne.find('[')
fin_date = ligne.find(']')
date = ligne[debut_date+1:fin_date-5]
date = datetime.datetime.strptime(date, "%Y-%m-%d %H:%M:%S")
sep_N = ligne.find('N:')
serveur = ligne[ligne.find('[',sep_N)+1:ligne.find(']',sep_N)]
sep_S = ligne.find('S:')
etat = ligne[ligne.find('[',sep_S)+1:ligne.find(']',sep_S)]
sep_R = ligne.find('R:')
regle = ligne[ligne.find('[',sep_R)+1:ligne.find(']',sep_R)]
sep_D = ligne.find('D:')
directive = ligne[ligne.find('[',sep_D)+1:ligne.find(']',sep_D)]
try:
db = mdb.connect('localhost', 'root', '', 'rudder');
cursor = db.cursor()
query = """INSERT IGNORE INTO serveur (nom_serveur) VALUES (%s)"""
cursor.execute(query, (serveur,))
query = """INSERT IGNORE INTO etat (nom_etat) VALUES (%s)"""
cursor.execute(query, (etat,))
query = """INSERT IGNORE INTO directive (nom_directive) VALUES (%s)"""
cursor.execute(query, (directive,))
query = """INSERT IGNORE INTO regle (nom_regle) VALUES (%s)"""
cursor.execute(query, (regle,))
query = """INSERT INTO serveur_etat_directive_regle (serveur, id_etat, id_directive, id_regle, date)
SELECT id_serveur, id_etat, id_directive, id_regle FROM serveur, etat, directive, regle
WHERE nom_serveur = %s AND nom_etat = %s AND nom_directive = %s AND nom_regle = %s"""
cursor.execute(query, (serveur, etat, directive, regle, date,))
except mdb.Error, e:
print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)
db.commit()
info.close()
db.close()
return logfile
if __name__ == "__main__":
with open('non-compliant-reports.log','r') as info:
extract(info) |