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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys
def parseCRMON(fichier_crmon):
contenu = []
pattern = []
for i, RE in enumerate(["(\w+\s\w+\:\s\w+\s\w+\s\d+\s\d+\:\d+\:\d+\s\d+)",
"(Current\:\s\w+)",
"Serveur\s(\w+)\s\(\w+\-\w+\-\w+\-\w+\-\w+\)\:\s(\w+)"]):
pattern.append(re.compile(RE))
fh = open(fichier_crmon,"r")
lignes = fh.read().splitlines()
fh.close()
found = [0,0,0]
for ligne in lignes:
for i in xrange(3):
found[i] = pattern[i].search(ligne)
if found[i]:
contenu.append(":".join(found[i].groups()))
return contenu
def addEntry(fichier, compare_table):
donnees_liste1 = compare_table
fin = open(fichier,"r")
data_list2 = fin.read().splitlines()
fin.close()
n = 0
for ligne in donnes_liste2:
n += 1
if donnees_liste1[1:7] == donnees_liste2[1:7]:
print "Pas de mise à jour"
else:
# Nombre de lignes
if n >= 72:
del donnees_liste2[(n-8):n]
fout = open(fichier,"w")
for i in range(0, len(donnees_liste1)):
fout.writelines(donnees_liste1[i])
fout.writelines("\n")
fout.writelines("\n")
for i in range(0, len(donnees_liste2)):
fout.writelines(donnees_liste2[i])
fout.writelines("\n")
fout.close()
else:
fout = open(fichier,"w")
for i in range(0, len(donnees_liste1)):
fout.writelines(donnees_liste1[i])
fout.writelines("\n")
fout.writelines("\n")
for i in range(0, len(donnees_liste2)):
fout.writelines(donnees_liste2[i])
fout.writelines("\n")
fout.close()
def main():
fichiers_a_ouvrir = sys.argv[1:]
# TODO: Validation des arguments
if len(fichiers_a_ouvrir) < 1:
sys.exit("ERREUR : Vous n'avez pas fourni d'arguments.\nUtilisation : crmon_parse.py chemin_au_fichier_de mise_a_jour chemin_au_fichier_des_entrees.")
fichier1_contenu = parseCRMON(fichiers_a_ouvrir[0])
addEntry(fichiers_a_ouvrir[1],fichier1_contenu)
if __name__ == '__main__':
main() |
Partager