#!/usr/bin/env python # -*- encoding: iso8859-15 -*- # # bourrages.py : récupération des fichiers de logs de bourrage l'imprimante. # # Stocke les logs de l'imprimante au fur et à mesure # # Copyright (c) 2008 Nicolas Dandrimont # import urllib import sys import re nom_fichier_log = "/var/log/bourrages.log" URL = "https://laserjet.adm.crans.org/hp/device/this.LCDispatcher?dispatch=html&cat=0&pos=3" span_rex = re.compile(r']+class="hpPageText"[^>]*>(?P[^<]+)', re.IGNORECASE) try: f = open(nom_fichier_log) except: sys.stderr.write("Erreur d'ouverture du fichier de logs en lecture...\n") lastpage = 0 else: lastpage = f.readlines()[-1].strip().split()[0] f.close() try: lignesimpr = urllib.urlopen(URL).readlines() except: sys.stderr.write("Problème de lecture de la page d'impression...\n") else: lignes_recup = [span_rex.match(ligne).group("contenu") for ligne in lignesimpr if span_rex.match(ligne)] premier_indice = lignes_recup.index('Num\xe9ro') + 4 erreurs = [] for i in xrange(premier_indice, len(lignes_recup), 4): erreurs.append(tuple(lignes_recup[i+1:i+4])) try: fichier_log = open(nom_fichier_log, 'a') except: sys.stderr.write("Erreur d'ouverture du fichier de logs en écriture...\n") else: for erreur in reversed(erreurs): if erreur[0] > lastpage: fichier_log.write("%s %s %s\n" % erreur) fichier_log.close()