etat_imprimante.py 1.2 KB
Newer Older
1
#!/bin/bash /usr/scripts/python.sh
2
# -*- mode: python; 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

Daniel STAN's avatar
Daniel STAN committed
12
13
14
import BeautifulSoup
import requests
import HTMLParser
gdetrez's avatar
gdetrez committed
15
import sys
16
from gestion.hptools import snmp
gdetrez's avatar
gdetrez committed
17

Daniel STAN's avatar
Daniel STAN committed
18
19
20
STATUS_URL = 'https://imprimante.adm.crans.org/hp/device/DeviceStatus/Index'
CA = '/etc/ssl/certs/cacert.org.pem'

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

def etat():
Daniel STAN's avatar
Daniel STAN committed
26
    return \
Vincent Le gallic's avatar
Vincent Le gallic committed
27
     ["L'imprimante est en test. L'interfaçage n'est pas encore terminé.",
28
      "Une notification de fin d'impression est envoyée par mail, avec les codes nécessaires pour aller récupérer vos documents.",
Daniel STAN's avatar
Daniel STAN committed
29
30
31
32
33
34
35
36
37
38
39
      _http_status()]

def _http_status():
    try:
        req = requests.get(STATUS_URL, verify=CA)
        doc = BeautifulSoup.BeautifulSoup(req.text)
        status_tag = doc.find(attrs={'id': 'MachineStatus'})
        h = HTMLParser.HTMLParser()
        return h.unescape(status_tag.text)
    except:
        raise ErreurCommunication()
40

41
42
43
if __name__ == '__main__':
    for x in etat():
        print x