Package zephir :: Package monitor :: Package agent :: Module reseau
[hide private]
[frames] | no frames]

Source Code for Module zephir.monitor.agent.reseau

 1  # -*- coding: UTF-8 -*- 
 2   
 3  """Informations sur les cartes ethernet 
 4  """ 
 5  import commands 
 6  import os 
 7   
 8  from agent import Agent 
 9  from zephir.monitor.utils import list_to_table 
10   
11 -class Reseau(Agent):
12 """Infos réseau 13 """
14 - def __init__(self):
15 self.name="reseau" 16 self.description="""Informations reseau (configuration des cartes ethernet)""" 17 Agent.__init__(self) 18 19 # traitements 20 resultat = self._reseau() 21 self.contenu_xml = list_to_table(resultat) 22 self.contenu_html = self.contenu_xml # list_to_table(resultat) 23 24 # écriture dans les fichiers 25 self.write_xml() 26 self.write_html()
27
28 - def _reseau(self):
29 """Récupère une sortie système 30 """ 31 exec_cmd = "/bin/cat /proc/net/dev" 32 s = commands.getoutput(exec_cmd) 33 lignes = s.splitlines() 34 # une ligne pour chaque carte 35 lignes = lignes[2:] 36 37 d = {} 38 for ligne in lignes: 39 deb_ligne = ligne.split(':')[0].strip() 40 fin_ligne = ligne.split(':')[1] 41 champs = fin_ligne.split() 42 # calcul du pourcentage d'erreur en entrée et sortie 43 if float(champs[1]) != 0: 44 pourc_in = (float(champs[2]) * 100) / float(champs[1]) 45 else: 46 pourc_in = 0 47 48 if float(champs[9]) != 0: 49 pourc_out =(float(champs[10]) * 100) / float(champs[9]) 50 else: 51 pourc_out = 0 52 53 # transforme les octets en kilo-octets 54 d[deb_ligne] = [round(float(champs[0])/1024), round(float(champs[8])/1024),round(pourc_in),round(pourc_out)] 55 56 exec_cmd = "/sbin/ifconfig" 57 s = commands.getoutput(exec_cmd) 58 cartes = s.split("\n\n") 59 60 for lignes in cartes: 61 ligne = lignes.splitlines()[0] 62 nom_carte = ligne.split()[0] 63 # si c'est un alias, on ignore 64 if nom_carte.count(':') == 0: 65 ligne = lignes.splitlines()[1] 66 adresses = ligne.strip() 67 adr_carte = adresses[adresses.index(':')+1:].split()[0] 68 # ajoute les informations au dictionnaire 69 d[nom_carte].append(adr_carte) 70 71 # transformation du dico de listes en liste de dicos (ah ah ah) 72 l = [] 73 for device in d.keys(): 74 try: 75 # Si on detecte un fort taux d'erreurs (>= 10%), on pose une alerte 76 if (d[device][2] >= 10) or (d[device][3] >= 10): 77 self.set_status("0") 78 l.append({'nom':'<font color="#cc0000">'+device+'</font>','entree (ko)':d[device][0],'entree (erreurs)':d[device][2],'sortie (ko)':d[device][1],'sortie (erreurs)':d[device][3]}) 79 else: 80 l.append({'nom':'<font color="#00cc00">'+device+'</font>','entree (ko)':d[device][0],'entree (erreurs)':d[device][2],'sortie (ko)':d[device][1],'sortie (erreurs)':d[device][3]}) 81 82 except: 83 pass 84 return l
85 86 87 if __name__ == "__main__": 88 Reseau() 89