Nouvelles fonctions en SNMP et rorganisation.
Reconfig du nom et de la vitesse de la prise chaque modif darcs-hash:20041005180155-41617-d239b055447ae482936453a8fb2ee4c8710e9d26.gz
This commit is contained in:
parent
4711222cb7
commit
1d04848382
2 changed files with 49 additions and 32 deletions
|
@ -394,13 +394,35 @@ class hpswitch :
|
|||
if self.__debug : self.__logDest.write("HP DEBUG : disable(prise=%s)\n" % prise)
|
||||
return self.set('IF-MIB::ifAdminStatus.%i' % prise, 'i', 2)
|
||||
|
||||
def eth_mode(self,mode,prise=0) :
|
||||
""" Fixe le mode d'une prise
|
||||
def is_enable(self,prise=0) :
|
||||
if not prise : prise = self.prise
|
||||
return self.get('IF-MIB::ifAdminStatus.%i' % prise) == 'up'
|
||||
|
||||
def is_up(self,prise=0) :
|
||||
if not prise : prise = self.prise
|
||||
return self.get('IF-MIB::ifOperStatus.%i' % prise) == 'up'
|
||||
|
||||
def nom(self,nom=None,prise=0) :
|
||||
""" Retourne ou attribue le nom à la prise fournie """
|
||||
if not prise : prise = self.prise
|
||||
oid = 'IF-MIB::ifAlias.%s' % prise
|
||||
if nom==None :
|
||||
return self.get(oid)
|
||||
else :
|
||||
self.set(oid, 's' , nom)
|
||||
|
||||
def eth_mode(self,mode=None,prise=0) :
|
||||
""" Fixe ou retourne le mode d'une prise
|
||||
mode est un tuple : (vitesse, duplex) ou simplement "auto"
|
||||
vitesse est : 10 100 ou 1000
|
||||
duplex est FD, HD ou auto
|
||||
"""
|
||||
if not prise : prise = self.prise
|
||||
oid = 'CONFIG-MIB::hpSwitchPortFastEtherMode.%s' % prise
|
||||
|
||||
if mode == None :
|
||||
return self.get(oid)
|
||||
|
||||
# Conversion du mode
|
||||
if mode == 'auto' :
|
||||
code = 5
|
||||
|
@ -413,32 +435,12 @@ class hpswitch :
|
|||
elif code == 2 : raise ValueError('Mode invelide %s' % mode)
|
||||
else: code += 1
|
||||
|
||||
self.set('CONFIG-MIB::hpSwitchPortFastEtherMode.%s' % prise,'i',code)
|
||||
|
||||
def status(self,prise=0) :
|
||||
""" Retourne un dictionnaire décrivant la prise donnée
|
||||
les clefs sont : activé, etat, vitesse, vitesse_max, nom
|
||||
"""
|
||||
if not prise : prise = self.prise
|
||||
if self.__debug : self.__logDest.write("HP DEBUG : status(prise=%s)\n" % prise)
|
||||
r={}
|
||||
# Activée ?
|
||||
r['activée'] = self.get('IF-MIB::ifAdminStatus.%i' % prise)
|
||||
# Etat actuel ?
|
||||
r['etat'] = self.get('IF-MIB::ifOperStatus.%i' % prise)
|
||||
# Vitesse
|
||||
v = self.get('IF-MIB::ifSpeed.%i' % prise)
|
||||
r['vitesse'] = '%iMbps' % ( int(v)/1000000 )
|
||||
# Vitesse maximum
|
||||
r['vitesse_max'] = '%iMbps' % int(self.get('IF-MIB::ifHighSpeed.%i' % prise))
|
||||
# Nom
|
||||
r['nom'] = self.get('IF-MIB::ifAlias.%i' % prise)
|
||||
|
||||
return r
|
||||
self.set(oid,'i',code)
|
||||
|
||||
class sw_chbre(hpswitch) :
|
||||
def __init__(self,chbre) :
|
||||
# On retrouve la chbre dans l'annuaire
|
||||
self.chbre = chbre
|
||||
try :
|
||||
bat = chbre[0].lower()
|
||||
prise = chbre_prises[bat][chbre[1:]]
|
||||
|
@ -450,10 +452,26 @@ class sw_chbre(hpswitch) :
|
|||
if prise[-1] == '-' :
|
||||
#Prise en 10
|
||||
self.prise = int(prise[1:-1])
|
||||
self.prise10Mb = True
|
||||
else :
|
||||
self.prise = int(prise[1:])
|
||||
self.prise10Mb = False
|
||||
except :
|
||||
raise ValueError('Chambre %s inconnue' % chbre)
|
||||
|
||||
# Config snmp
|
||||
self.get, self.set, self.walk = config_snmp_secrete(snmp,self.switch)
|
||||
|
||||
|
||||
def reconfigure(self) :
|
||||
""" Reconfigure la prise (nom et vitesse) """
|
||||
in10 = self.eth_mode().find('10Mbits') != 1
|
||||
|
||||
if self.prise10Mb and not in10 :
|
||||
self.eth_mode(('10','auto'))
|
||||
elif not self.prise10Mb and in10 :
|
||||
self.eth_mode('auto')
|
||||
|
||||
nom = 'Chambre_%s' % self.chbre.capitalize()
|
||||
if nom != self.nom() :
|
||||
self.nom(nom)
|
||||
|
|
|
@ -579,18 +579,17 @@ def prise_etat(chbre) :
|
|||
f = ''
|
||||
try :
|
||||
# On met aussi l'état
|
||||
conn = sw_chbre(chbre)
|
||||
f += 'prise %s' % conn.prise_brute
|
||||
result = conn.status()
|
||||
prise = sw_chbre(chbre)
|
||||
f += 'prise %s' % prise.prise_brute
|
||||
rows, cols = get_screen_size()
|
||||
if result['etat']=='up' :
|
||||
if prise.is_up() :
|
||||
f += ', ' + coul('machine branchée','vert')
|
||||
reste_cols = cols - 45
|
||||
if result['vitesse_max'] == '10Mbps' :
|
||||
if prise.eth_mode().find('10Mbits')!=-1 :
|
||||
f+= ', ' + coul('prise en 10Mbps','jaune')
|
||||
reste_cols -= 17
|
||||
f+=', '
|
||||
macs = conn.show_prise_mac()
|
||||
macs = prise.show_prise_mac()
|
||||
if len(macs) == 0:
|
||||
if reste_cols < 20 :
|
||||
# Faut aller à la ligne
|
||||
|
@ -614,7 +613,7 @@ def prise_etat(chbre) :
|
|||
f += ', '
|
||||
f += "%s" % macs.pop()
|
||||
count += 1
|
||||
elif result['activée'] == 'down' :
|
||||
elif not prise.is_enable() :
|
||||
f+= ', ' + coul('prise désactivée','rouge')
|
||||
else :
|
||||
f+= ', activée, lien non détecté'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue