1
2
3
4
5
6
7
8
9 """
10 Agent zephir pour les cartes réseau
11 """
12
13 import os
14 from twisted.python import log
15 from twisted.internet import defer
16 from twisted.internet.utils import getProcessOutput, getProcessValue
17
18 from zephir.monitor.agentmanager.agent import Agent
19 from zephir.monitor.agentmanager.data import HTMLData, TableData
20 from zephir.monitor.agentmanager.util import status_to_img, boolean_to_onoff
21 from zephir.monitor.agentmanager import status
22
23 NETWORK_CHECK = '/usr/sbin/fping'
24
26
29 Agent.__init__(self, name, **params)
30 self.table = TableData([
31 ('status', "état", {'align':'center'}, status_to_img),
32 ('interf', "Interface", {'align':'left'}, None),
33 ])
34 self.data = [self.table]
35
36
38 self.mesures = []
39
40 cmd_rvp = "/usr/share/eole/test-rvp"
41 if os.path.exists(cmd_rvp):
42 return self.measure_rvp(cmd_rvp)
43 else:
44 return self.measure_network()
45
47
48 if not os.path.isfile('/var/lock/rvp'):
49 status_rvp = 'Off'
50 self.mesures.append({ 'interf': 'ipsec',
51 'status': status_rvp })
52 return self.measure_network()
53 else:
54 update = getProcessOutput(cmd_rvp, args=[])
55 return update.addCallbacks(self.callback_rvp, self.errback_rvp)
56
58 status_rvp = 'On'
59 if 'alive' not in data:
60 status_rvp = 'Off'
61 self.mesures.append({ 'interf': 'ipsec',
62 'status': status_rvp })
63 self.measure_data['ipsec'] = status_rvp
64
65 return self.measure_network()
66
68 self.mesures.append({ 'interf': 'ipsec',
69 'status': 'Off' })
70 self.measure_data['ipsec'] = 'Off'
71
72 return self.measure_network()
73
75
76 from creole.parsedico import parse_dico
77 from ifconfig import ifconfig
78 d = parse_dico()
79 ic = ifconfig()
80
81 options = ['-a','-A','-q']
82 self.interfaces = {}
83 for var, value in d.items():
84 if var.startswith('adresse_ip_eth') and value != "":
85 self.interfaces[var[var.index('eth'):]] = ic.getStatus(var[var.index('eth'):])
86 if var.startswith('adresse_ip_int') and value != "":
87 self.interfaces['eth'+var[-1]] = ic.getStatus('eth'+var[-1])
88 interfaces = self.interfaces.keys()
89 interfaces.sort()
90 for interf in interfaces:
91 self.mesures.append({'interf': interf,
92 'status': boolean_to_onoff(self.interfaces[interf]) })
93 self.measure_data[interf] = boolean_to_onoff(self.interfaces[interf])
94 return {'networks': self.mesures}
95
96
98 Agent.write_data(self)
99 if self.last_measure is not None:
100 self.table.table_data = self.last_measure.value['networks']
101
102
104 """remonte une erreur si un des services est tombé"""
105 if self.last_measure is not None:
106 for service in self.last_measure.value['networks']:
107 if service['status'] != 'On':
108 return status.Error()
109 else:
110
111 return status.Unknown()
112 return status.OK()
113