From b01348c4eb6ebe2ab59c19ab4c85effdf5424d89 Mon Sep 17 00:00:00 2001 From: Sylvain Boilard Date: Sat, 20 Apr 2013 15:56:28 +0200 Subject: [PATCH] =?UTF-8?q?[print=5Fstatus]=20On=20ne=20crashe=20pas=20si?= =?UTF-8?q?=20l=E2=80=99imprimante=20est=20dans=20les=20choux=20et=20nous?= =?UTF-8?q?=20envoie=20du=20garbage.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- impression/print_status.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/impression/print_status.py b/impression/print_status.py index 31fb1dc4..978e8284 100755 --- a/impression/print_status.py +++ b/impression/print_status.py @@ -23,6 +23,7 @@ import smtplib from ldap_crans import crans_ldap last_print_filename = "/var/run/print_status/last_print.txt" +error_filename = "/var/run/print_status/error.txt" # Cette chaîne est utilisée pour construire une regexp, il faut que ce soit une chaîne brute. files_directory = r"/var/impression/fichiers/" printer_host = "imprimante.adm.crans.org" @@ -105,8 +106,16 @@ http = httplib2.Http() headers, _ = http.request("http://" + printer_host + "/twelcome.cgi?CorePGTAG=0&Dummy=" + getMSE()) _, content = http.request("http://" + printer_host + "/pprint.csv?Flag=Csv_Data&LogType=0&Dummy=" + getMSE(), 'GET', headers={'Cookie': headers['set-cookie']}) task_list = content.split('\n') -# On enlève les entêtes et les deux lignes vides à la fin de la liste. -task_list.pop(0) +# On vérifie que ce qu’on a récupéré ressemble à du CSV. Si tout se passe bien, l’imprimante envoie 13 champs par tâche. +# On fait le test sur les entêtes, ce qui permet de s’en débarasser au passage. +if len(task_list.pop(0).split(',')) != 13: + # En cas d’erreur sur l’imprimante, plutôt que de spamer sur roots@crans.org, on note l’échec quelque part à l’attention d’un service de monitoring. + error_file = open(error_filename, "w") + error_file.write("La liste des tâches renvoyée par l’imprimante n’a pas le format attendu.") + error_file.close() + exit(0) +os.system("rm -f " + error_filename) +# On enlève aussi les deux lignes vides à la fin de la liste. task_list.pop() task_list.pop()