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)
|
if self.__debug : self.__logDest.write("HP DEBUG : disable(prise=%s)\n" % prise)
|
||||||
return self.set('IF-MIB::ifAdminStatus.%i' % prise, 'i', 2)
|
return self.set('IF-MIB::ifAdminStatus.%i' % prise, 'i', 2)
|
||||||
|
|
||||||
def eth_mode(self,mode,prise=0) :
|
def is_enable(self,prise=0) :
|
||||||
""" Fixe le mode d'une prise
|
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"
|
mode est un tuple : (vitesse, duplex) ou simplement "auto"
|
||||||
vitesse est : 10 100 ou 1000
|
vitesse est : 10 100 ou 1000
|
||||||
duplex est FD, HD ou auto
|
duplex est FD, HD ou auto
|
||||||
"""
|
"""
|
||||||
if not prise : prise = self.prise
|
if not prise : prise = self.prise
|
||||||
|
oid = 'CONFIG-MIB::hpSwitchPortFastEtherMode.%s' % prise
|
||||||
|
|
||||||
|
if mode == None :
|
||||||
|
return self.get(oid)
|
||||||
|
|
||||||
# Conversion du mode
|
# Conversion du mode
|
||||||
if mode == 'auto' :
|
if mode == 'auto' :
|
||||||
code = 5
|
code = 5
|
||||||
|
@ -412,33 +434,13 @@ class hpswitch :
|
||||||
if code == 8 : code += 1
|
if code == 8 : code += 1
|
||||||
elif code == 2 : raise ValueError('Mode invelide %s' % mode)
|
elif code == 2 : raise ValueError('Mode invelide %s' % mode)
|
||||||
else: code += 1
|
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) :
|
class sw_chbre(hpswitch) :
|
||||||
def __init__(self,chbre) :
|
def __init__(self,chbre) :
|
||||||
# On retrouve la chbre dans l'annuaire
|
# On retrouve la chbre dans l'annuaire
|
||||||
|
self.chbre = chbre
|
||||||
try :
|
try :
|
||||||
bat = chbre[0].lower()
|
bat = chbre[0].lower()
|
||||||
prise = chbre_prises[bat][chbre[1:]]
|
prise = chbre_prises[bat][chbre[1:]]
|
||||||
|
@ -450,10 +452,26 @@ class sw_chbre(hpswitch) :
|
||||||
if prise[-1] == '-' :
|
if prise[-1] == '-' :
|
||||||
#Prise en 10
|
#Prise en 10
|
||||||
self.prise = int(prise[1:-1])
|
self.prise = int(prise[1:-1])
|
||||||
|
self.prise10Mb = True
|
||||||
else :
|
else :
|
||||||
self.prise = int(prise[1:])
|
self.prise = int(prise[1:])
|
||||||
|
self.prise10Mb = False
|
||||||
except :
|
except :
|
||||||
raise ValueError('Chambre %s inconnue' % chbre)
|
raise ValueError('Chambre %s inconnue' % chbre)
|
||||||
|
|
||||||
# Config snmp
|
# Config snmp
|
||||||
self.get, self.set, self.walk = config_snmp_secrete(snmp,self.switch)
|
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 = ''
|
f = ''
|
||||||
try :
|
try :
|
||||||
# On met aussi l'état
|
# On met aussi l'état
|
||||||
conn = sw_chbre(chbre)
|
prise = sw_chbre(chbre)
|
||||||
f += 'prise %s' % conn.prise_brute
|
f += 'prise %s' % prise.prise_brute
|
||||||
result = conn.status()
|
|
||||||
rows, cols = get_screen_size()
|
rows, cols = get_screen_size()
|
||||||
if result['etat']=='up' :
|
if prise.is_up() :
|
||||||
f += ', ' + coul('machine branchée','vert')
|
f += ', ' + coul('machine branchée','vert')
|
||||||
reste_cols = cols - 45
|
reste_cols = cols - 45
|
||||||
if result['vitesse_max'] == '10Mbps' :
|
if prise.eth_mode().find('10Mbits')!=-1 :
|
||||||
f+= ', ' + coul('prise en 10Mbps','jaune')
|
f+= ', ' + coul('prise en 10Mbps','jaune')
|
||||||
reste_cols -= 17
|
reste_cols -= 17
|
||||||
f+=', '
|
f+=', '
|
||||||
macs = conn.show_prise_mac()
|
macs = prise.show_prise_mac()
|
||||||
if len(macs) == 0:
|
if len(macs) == 0:
|
||||||
if reste_cols < 20 :
|
if reste_cols < 20 :
|
||||||
# Faut aller à la ligne
|
# Faut aller à la ligne
|
||||||
|
@ -614,7 +613,7 @@ def prise_etat(chbre) :
|
||||||
f += ', '
|
f += ', '
|
||||||
f += "%s" % macs.pop()
|
f += "%s" % macs.pop()
|
||||||
count += 1
|
count += 1
|
||||||
elif result['activée'] == 'down' :
|
elif not prise.is_enable() :
|
||||||
f+= ', ' + coul('prise désactivée','rouge')
|
f+= ', ' + coul('prise désactivée','rouge')
|
||||||
else :
|
else :
|
||||||
f+= ', activée, lien non détecté'
|
f+= ', activée, lien non détecté'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue