#!/usr/bin/env python # -*- coding: iso-8859-15 -*- """ etat_imprimante.py Récupère, filtre et formate l'état actuel de l'imprimante Copyright (c) 2006, 2007, 2008, 2009 by Cr@ns (http://www.crans.org) """ import sys sys.path.append("/usr/scripts/gestion") from hptools import snmp from config import impression class ErreurCommunication(Exception): """Si une erreur est survenue lors de la communication avec l'imprimante""" pass def etat(): exec ("a = etat_%s()" % impression.imprimante) return a def etat_canon(): _dico = { 'idle(3)\nrunning(2)' : u'En marche', 'printing(4)\nrunning(2)' : u'Impression en cours', 'other(1)\ndown(5)' : u"Erreur [grave] de l'imprimante", 'other(1)\nrunning(2)' : u'Imprimante en veille', 'warmup(5)\nrunning(2)' : u'Imprimante en attente', 'idle(3)\nwarning(3)' : u'Warning: ne fonctionne pas', 'printing(4)\nwarning(3)' : u'Warning: imprime (mais warning)', } try: msg = liste_msg = [] comm = snmp(host="imprimante.adm.crans.org", version="1", community="public") for oid in [".hrPrinterStatus.1", ".hrDeviceStatus.1"]: #".hrPrinterDetectedErrorState.1" msg.append(comm.get_string(oid)) liste_msg = [ _dico['\n'.join(msg)] ] except Exception,err: liste_msg.append("[%s]" % unicode(err)) return liste_msg def etat_laserjet(): """ Renvoie une liste des differents ecrans actuels du display de l'imprimante """ _dico = { u"READY": u"Prête", u"PrÁt": u"Prêt", u"Pr menus, appuy \x1e": u"", u"Powersave activÅ": u"En veille", u"Verification": u"Vérification imprimante", u"imprimante": u"", u"PrÅchauffage": u"Préchauffage", u"Traitement de la": u"Impression en cours", u"tÀche du bac 4": u"", u"COMMANDER CARTOUCHE": u"", u"COMMANDER KIT NETTOY": u"", u"COMMANDER FOURNIT.": u"", u"CYAN": u"", u"MAGENTA": u"", u"JAUNE": u"", u"NOIR": u"", u'Pr aide appuyer \x1f': u"", u'13.12.12 BOURRAGE DS':u"Bourrage papier", u'ACCESSOIRE GAUCHE':u"", u'13.03.00 BOURRAGE':u"Bourrage papier", u'DS TRAPPE SUP DROITE':u"", u'COMM TAMB. NOIR':u"", u'PAGES REST.': u"", } liste_oid = ["mib-2.43.16.5.1.2.1.1","mib-2.43.16.5.1.2.1.2","mib-2.43.16.5.1.2.1.3","mib-2.43.16.5.1.2.1.4","mib-2.43.16.5.1.2.1.5"] try: comm = snmp(host="laserjet.adm.crans.org",version="1",community="public") liste_msg = [] for oid in liste_oid: msg = comm.get_string(oid).decode("ISO-8859-1") for k in _dico.keys(): if k in msg: msg = _dico[k] if msg: liste_msg.append(msg) except Exception,err: raise ErreurCommunication, str(err) return liste_msg def enregistre(filename="/usr/script/impression/imprimante.etat"): l = etat() fichier = open(filename,'w') for x in l: fichier.write(x+"\n") fichier.close()