statsVlans : répararation et dépoussiérage
This commit is contained in:
parent
8b551ae8c8
commit
1d58966ebc
1 changed files with 22 additions and 6 deletions
|
@ -11,6 +11,9 @@ S'il est impossbile de se connecter à un switch, on abandonne le batiment conce
|
||||||
d'autre VLANs qu'"adherent", ainsi que les machines connectées sur ces prises.
|
d'autre VLANs qu'"adherent", ainsi que les machines connectées sur ces prises.
|
||||||
|
|
||||||
Xavier Lagorce - 2009
|
Xavier Lagorce - 2009
|
||||||
|
|
||||||
|
Réparé en 2015, le script remarche excepté la recherche par mac, remplacée par défaut par
|
||||||
|
la recherche du propriétaire de la chambre (création de l'option -m)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys, getopt
|
import sys, getopt
|
||||||
|
@ -63,12 +66,10 @@ def scan_bats(bats, annuaire=chbre_prises, verbose=False):
|
||||||
prises = dict()
|
prises = dict()
|
||||||
for chbre, prise in annuaire(bat).iteritems():
|
for chbre, prise in annuaire(bat).iteritems():
|
||||||
prises[prise] = chbre
|
prises[prise] = chbre
|
||||||
|
|
||||||
current_switch = -1
|
current_switch = -1
|
||||||
switch_name = ' '
|
switch_name = ' '
|
||||||
|
|
||||||
for prise in sorted(prises.keys()):
|
for prise in sorted(prises.keys()):
|
||||||
|
|
||||||
# Si l'on est pas connecté au switch sur lequel se trouve la prise, on en change
|
# Si l'on est pas connecté au switch sur lequel se trouve la prise, on en change
|
||||||
if current_switch != int(prise[0]) :
|
if current_switch != int(prise[0]) :
|
||||||
switch_name = u"bat" + bat + u"-" + prise[0] + u".adm.crans.org"
|
switch_name = u"bat" + bat + u"-" + prise[0] + u".adm.crans.org"
|
||||||
|
@ -86,7 +87,11 @@ def scan_bats(bats, annuaire=chbre_prises, verbose=False):
|
||||||
|
|
||||||
# On récupère les VLANs présents sur la prise
|
# On récupère les VLANs présents sur la prise
|
||||||
try:
|
try:
|
||||||
vlans = switch.vlans(prise)
|
vlans = switch.vlans(prise[1:])
|
||||||
|
if verbose:
|
||||||
|
print prise[1:]
|
||||||
|
for vlan in vlans:
|
||||||
|
print vlan
|
||||||
except ConversationError:
|
except ConversationError:
|
||||||
if verbose:
|
if verbose:
|
||||||
print u"\tErreur de communication avec " + switch_name
|
print u"\tErreur de communication avec " + switch_name
|
||||||
|
@ -106,7 +111,10 @@ def scan_bats(bats, annuaire=chbre_prises, verbose=False):
|
||||||
vlans_stats[vlan] = vlans_stats[vlan] + 1
|
vlans_stats[vlan] = vlans_stats[vlan] + 1
|
||||||
# On récupère les données pour les afficher plus tard
|
# On récupère les données pour les afficher plus tard
|
||||||
try:
|
try:
|
||||||
|
if macres:
|
||||||
macs = switch.show_prise_mac(int(prise[1:]))
|
macs = switch.show_prise_mac(int(prise[1:]))
|
||||||
|
else:
|
||||||
|
macs = []
|
||||||
except ConversationError:
|
except ConversationError:
|
||||||
if verbose:
|
if verbose:
|
||||||
print u"\tErreur de communication avec " + switch_name
|
print u"\tErreur de communication avec " + switch_name
|
||||||
|
@ -130,6 +138,7 @@ def scan_bats(bats, annuaire=chbre_prises, verbose=False):
|
||||||
m.nom().split('.')[0],
|
m.nom().split('.')[0],
|
||||||
t,
|
t,
|
||||||
', '.join(sorted(vlans))])
|
', '.join(sorted(vlans))])
|
||||||
|
|
||||||
# Si aucune machine n'est connectée, on ajoute quand même une
|
# Si aucune machine n'est connectée, on ajoute quand même une
|
||||||
# entrée dans les résultats
|
# entrée dans les résultats
|
||||||
else:
|
else:
|
||||||
|
@ -183,6 +192,8 @@ def __usage():
|
||||||
Affiche ce message d'aide.
|
Affiche ce message d'aide.
|
||||||
-v / --verbose :
|
-v / --verbose :
|
||||||
Affiche le détail des connexions aux switchs pendant le scan.
|
Affiche le détail des connexions aux switchs pendant le scan.
|
||||||
|
-m / --macresearch
|
||||||
|
Effectue un traitement des résultats par mac (et non par propriétaire de chambre)
|
||||||
|
|
||||||
Une des options --all ou --bats doit être obligatoirement spécifiée.
|
Une des options --all ou --bats doit être obligatoirement spécifiée.
|
||||||
"""
|
"""
|
||||||
|
@ -196,15 +207,17 @@ if __name__ == "__main__":
|
||||||
__usage_brief()
|
__usage_brief()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
options, arg = getopt.gnu_getopt(sys.argv[1:],'ab:p:hv',
|
options, arg = getopt.gnu_getopt(sys.argv[1:],'ab:p:hvm',
|
||||||
['all','bats=','prises=','help','verbose'])
|
['all','bats=','prises=','help','verbose','macresearch'])
|
||||||
except getopt.error, msg :
|
except getopt.error, msg :
|
||||||
__usage_brief(unicode(msg))
|
__usage_brief(unicode(msg))
|
||||||
|
|
||||||
# Traitement des options
|
# Traitement des options
|
||||||
verb = False
|
verb = False
|
||||||
|
|
||||||
bats = ''
|
bats = ''
|
||||||
all_prises = False
|
all_prises = False
|
||||||
|
macres = False
|
||||||
|
|
||||||
for opt, val in options:
|
for opt, val in options:
|
||||||
if opt == '-a' or opt == '--all':
|
if opt == '-a' or opt == '--all':
|
||||||
|
@ -227,6 +240,9 @@ if __name__ == "__main__":
|
||||||
elif opt == '-v' or opt == '--verbose':
|
elif opt == '-v' or opt == '--verbose':
|
||||||
verb = True
|
verb = True
|
||||||
|
|
||||||
|
elif opt == '-m' or opt == '--macresearch':
|
||||||
|
macres = True
|
||||||
|
|
||||||
if not bats:
|
if not bats:
|
||||||
__usage_brief(u"il faut spécifier des bâtiments à scanner")
|
__usage_brief(u"il faut spécifier des bâtiments à scanner")
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue