#!/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 by 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 ("etat_%s()" % impression.imprimante) def etat_canon(): try: liste_msg = [] comm = snmp(host="imprimante.adm.crans.org", version="1", community="public") for oid in [".hrPrinterStatus.1", ".hrPrinterDetectedErrorState.1"]: msg = comm.get_string(oid) if msg: liste_msg.append(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()