etat_imprimante.py 3.15 KB
Newer Older
gdetrez's avatar
gdetrez committed
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
gdetrez's avatar
gdetrez committed
3
4
5
"""
 etat_imprimante.py

6
     Récupère, filtre et formate l'état actuel de l'imprimante
7

8
 Copyright (c) 2006, 2007, 2008, 2009 by Cr@ns (http://www.crans.org)
gdetrez's avatar
gdetrez committed
9
10

"""
gdetrez's avatar
gdetrez committed
11
12
13
14

import sys
sys.path.append("/usr/scripts/gestion")

15
16
from hptools import snmp
from config import impression
gdetrez's avatar
gdetrez committed
17
18

class ErreurCommunication(Exception):
gdetrez's avatar
gdetrez committed
19
    """Si une erreur est survenue lors de la communication avec l'imprimante"""
gdetrez's avatar
gdetrez committed
20
21
22
    pass

def etat():
23
    return (globals()["etat_%s" % impression.imprimante])()
24
25

def etat_canon():
26
    _dico = {
27
        'idle(3)\nrunning(2)'     : u'Imprimante fonctionnelle',
28
        'printing(4)\nrunning(2)' : u'Impression en cours',
29
        'other(1)\ndown(5)'       : u"Imprimante hors-service",
30
        'other(1)\nrunning(2)'    : u'Imprimante en veille',
31
        'warmup(5)\nrunning(2)'   : u'Préchauffage',
32
33
        'idle(3)\nwarning(3)'     : u'Imprimante fonctionnelle',
        'printing(4)\nwarning(3)' : u'Impression en cours'
34
      }
35
    try:
36
        raw_msg = msg = []
37
        comm = snmp(host="imprimante.adm.crans.org", version="1", community="public")
38

39
40
        for oid in [".hrPrinterStatus.1", ".hrDeviceStatus.1"]:
                    #".hrPrinterDetectedErrorState.1"
41
        #    raw_msg.append(comm.get_string(oid))
42
43
44
        msg = _dico['\n'.join(msg)].split('\n')

        if raw_msg[1] == 'warning(3)':
45
            msg += [v.replace('"', '') for v in comm.walk('mib-2.43.18.1.1.8').values()]
46

47
    except Exception,err:
48
        msg.append("[%s]" % unicode(err))
49
    msg += impression.state_msg
50

51
    return msg
52
53

def etat_laserjet():
gdetrez's avatar
gdetrez committed
54
    """ Renvoie une liste des differents ecrans actuels du display de l'imprimante """
55
    _dico = {
56
57
      u"READY": u"Prête",
      u"PrÁt": u"Prêt",
58
      u"Pr menus, appuy \x1e": u"",
59
60
      u"Powersave activÅ": u"En veille",
      u"Verification": u"Vérification imprimante",
61
      u"imprimante": u"",
62
      u"PrÅchauffage": u"Préchauffage",
63
      u"Traitement de la": u"Impression en cours",
64
      u"tÀche du bac 4": u"",
65
66
67
68
69
70
71
72
      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"",
73
      u'13.12.12 BOURRAGE DS':u"Bourrage papier",
74
      u'ACCESSOIRE GAUCHE':u"",
75
      u'13.03.00 BOURRAGE':u"Bourrage papier",
76
77
78
79
80
      u'DS TRAPPE SUP DROITE':u"",
      u'COMM TAMB. NOIR':u"",
      u'PAGES REST.': u"",
    }

gdetrez's avatar
gdetrez committed
81
82
    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:
83
        comm = snmp(host="laserjet.adm.crans.org",version="1",community="public")
gdetrez's avatar
gdetrez committed
84
85
86
        liste_msg = []
        for oid in liste_oid:
            msg = comm.get_string(oid).decode("ISO-8859-1")
87
88
            for k in _dico.keys():
                if k in msg: msg = _dico[k]
gdetrez's avatar
gdetrez committed
89
90
91
92
            if msg: liste_msg.append(msg)
    except Exception,err:
        raise ErreurCommunication, str(err)
    return liste_msg
93
94
95
96
97
98
99
100

def enregistre(filename="/usr/script/impression/imprimante.etat"):
    l = etat()
    fichier = open(filename,'w')
    for x in l:
        fichier.write(x+"\n")
    fichier.close()