diff --git a/wiki/macro/MonitStatus.py b/wiki/macro/MonitStatus.py index 3b7909ef..965cc61f 100644 --- a/wiki/macro/MonitStatus.py +++ b/wiki/macro/MonitStatus.py @@ -5,7 +5,7 @@ import os, sys, sre, commands, time """ Permet d'intégrer au wiki les résultats de Monit. -La macro wiki est : +La macro wiki est : [[MonitStatus(hotes=host,categories=[All|Process|File],services=[All|Off|On])]] Exemple : @@ -30,14 +30,14 @@ def HostStatus (host) : Retourne un dictionnaire représentation de l'état des services de la machine. """ - + status = {} - - f = open('%s/%s' % (statusfolder,host) ) - + + f = open('%s/%s' % (statusfolder,host) ) + # c'est un hote sous Debian ########################### - + # s est le service qu'on est en trainde parser s = None for line in f.readlines()[2:] : @@ -56,7 +56,7 @@ def HostStatus (host) : else : # on ajoute les données status[t][s][line[:34].strip()] = line[34:].strip() - + # on supprime les données system try : status.pop('System') @@ -78,20 +78,20 @@ def AllStatusOff () : """ Retourne status avec juste les services off """ - + status = AllStatus() - + for h in status.keys() : - + # si c'est un host qui est down, on le laisse tel quel pour éviter qu'il le supprime if h in NotRunningHosts() : continue - + # on supprime les types for t in status[h].keys() : - + for s in status[h][t].keys() : - + # on supprime un status s'il est Up if status[h][t][s]['status'] in ['running','accessible'] : status[h][t].pop(s) @@ -114,7 +114,7 @@ def FormatService(Type, Service, Data, f) : Data : dictionnaire contenant toutes les données Data[info] f : formatter """ - + result = '' result += f.table_row(1) result += f.table_cell(1,{'style':'background-color:silver'}) @@ -126,7 +126,7 @@ def FormatService(Type, Service, Data, f) : result += f.text(Service) result += f.strong(0) result += f.table_cell(0) - if Data['status'] in ['running','accessible'] : + if Data['status'] in ['running','accessible'] : result += f.table_cell(1,{'style':'background-color:lime'}) else : result += f.table_cell(1,{'style':'background-color:red'}) @@ -142,20 +142,20 @@ def FormatType(Type, Data, f) : Data : dictionnaire contenant toutes les données Data[service][info] f : formatter """ - + result = '' # titre result += f.heading(1,3) result += f.text(Type) result += f.heading(0,3) - + # les services result += f.table(1) for s in Data.keys() : result += FormatService(Type,s,Data[s],f) result += f.table(0) - + return result def FormatHost (Host, Data, f) : @@ -165,42 +165,42 @@ def FormatHost (Host, Data, f) : Data : dictionnaire contenant toutes les données Data[type][service][info] f : formatter """ - + result = '' - + # titre result += f.heading(1,2) result += f.text(Host)[0].upper() + f.text(Host)[1:] result += f.heading(0,2) - + # si monit ne tourne pas if Host in NotRunningHosts() : return result + Cellule('Monit ne semble pas tourner sur %s' % Host,'yellow',f) - + result += f.table(1) result += f.table_row(1) for t in Data.keys() : result += f.table_cell(1,{'valign':'top'}) result += FormatType(t,Data[t],f) result += f.table_cell(0) - - result += f.table_row(0) + + result += f.table_row(0) result += f.table(0) - + return result def FormatHosts(Data, f) : """ Retourne le code HTML de tous les hotes fournis Data : dictionnaire contenant toutes les données Data[hote][type][service][info] - f : formatter + f : formatter """ - + result = '' - + for h in Data.keys() : result += FormatHost(h,Data[h],f) - + return result def Cellule(texte, couleur, f) : @@ -221,13 +221,13 @@ def execute(macro, filtre) : Corps principal de la macro """ f = macro.formatter - + # on met en forme le filtre if not filtre : filtre = 'all' else : filtre = filtre.lower() - + if filtre == 'off' : # tous les services off status = AllStatusOff() @@ -241,35 +241,35 @@ def execute(macro, filtre) : # tous les services status = AllStatus() return FormatHosts(status, f) - + elif '@' in filtre : # affichage d'un service simple - + host = filtre.split('@')[1] service = filtre.split('@')[0] status = HostStatus(host) - + # recherche du service dans la config s = {} for t in status.keys() : if service in status[t].keys() : s = status[t][service] - + if not s : # service non trouvé code = f.table_cell(0) code += f.table_cell(1,{'style':'background-color:yellow'}) code += f.text(u'Service introuvable') return code - + # création de la chaine de retour code = f.table_cell(0) - if s['status'] in ['running','accessible'] : + if s['status'] in ['running','accessible'] : code += f.table_cell(1,{'style':'background-color:lime'}) else : code += f.table_cell(1,{'style':'background-color:red'}) code += f.text(s['status']) return code - + else : return Cellule('Erreur de filtre','yellow',f)