1
2
3
4
5
6
7
8
9 """
10 Agent zephir listant le contenu de l'annaire LDAP
11 """
12
13 from zephir.monitor.agentmanager.agent import Agent
14 from zephir.monitor.agentmanager.data import HTMLData, TableData
15 from zephir.monitor.agentmanager import status
16 from zephir.monitor.agentmanager.util import log
17 import ldap,time
18
20
22 Agent.__init__(self, name, **params)
23 """
24 Gestion du status :
25 par défaut : OK
26 Erreur si pas de connexion
27 Warning si erreur lors d'une ou plusieurs requêtes
28 """
29 self.status = status.OK()
30
31
32 self.table1 = TableData([
33 ('name', '', {'align':'left'}, None),
34 ('nb', '' , {'align':'center'}, None)
35 ])
36
37 self.data = [self.table1]
38
40 try :
41 conn=ldap.open('localhost')
42 except :
43 self.status = status.Error()
44 return {'statistics1' : []}
45
46 self.status = status.OK()
47 self.fail = 0
48
49 statistics1 = []
50 statistics1.append (
51 { 'name' : 'Nombre d\'utilisateurs',
52 'nb' : self._requete(conn, "(objectclass=inetOrgPerson)")
53 })
54 statistics1.append (
55 { 'name' : 'Nombre de groupes',
56 'nb' : self._requete(conn, "(objectClass=posixGroup)")
57 })
58 statistics1.append (
59 { 'name' : 'Nombre de partages',
60 'nb' : self._requete(conn,"(objectClass=sambaFileShare)")
61 })
62 statistics1.append (
63 { 'name' : 'Nombre de postes',
64 'nb' : self._requete(conn,"(&(objectclass=posixAccount)(description=Computer))")
65 })
66
67 if self.fail >= 2 :
68 self.status = status.Warn()
69
70 return {'statistics1' : statistics1}
71
72
74 time.sleep(0.05)
75 try:
76 return len(conn.search_s("o=gouv,c=fr", ldap.SCOPE_SUBTREE, filtre, ['']))
77 except:
78 try:
79
80 time.sleep(0.1)
81 return len(conn.search_s("o=gouv,c=fr", ldap.SCOPE_SUBTREE, filtre, ['']))
82 except Exception, e:
83 log.msg('erreur ldap : %s' % str(e))
84 self.fail += 1
85 return '???'
86
88 return "<font color=\"red\">%s</font>" % string
89
91 Agent.write_data(self)
92 if self.last_measure is not None:
93 self.table1.table_data = self.last_measure.value['statistics1']
94
97