95 lines
3 KiB
Python
95 lines
3 KiB
Python
#!/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'Pas configuré comme une imprimante',
|
|
'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()
|
|
|