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.
|
||||
|
||||
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
|
||||
|
@ -63,12 +66,10 @@ def scan_bats(bats, annuaire=chbre_prises, verbose=False):
|
|||
prises = dict()
|
||||
for chbre, prise in annuaire(bat).iteritems():
|
||||
prises[prise] = chbre
|
||||
|
||||
current_switch = -1
|
||||
switch_name = ' '
|
||||
|
||||
for prise in sorted(prises.keys()):
|
||||
|
||||
# Si l'on est pas connecté au switch sur lequel se trouve la prise, on en change
|
||||
if current_switch != int(prise[0]) :
|
||||
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
|
||||
try:
|
||||
vlans = switch.vlans(prise)
|
||||
vlans = switch.vlans(prise[1:])
|
||||
if verbose:
|
||||
print prise[1:]
|
||||
for vlan in vlans:
|
||||
print vlan
|
||||
except ConversationError:
|
||||
if verbose:
|
||||
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
|
||||
# On récupère les données pour les afficher plus tard
|
||||
try:
|
||||
if macres:
|
||||
macs = switch.show_prise_mac(int(prise[1:]))
|
||||
else:
|
||||
macs = []
|
||||
except ConversationError:
|
||||
if verbose:
|
||||
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],
|
||||
t,
|
||||
', '.join(sorted(vlans))])
|
||||
|
||||
# Si aucune machine n'est connectée, on ajoute quand même une
|
||||
# entrée dans les résultats
|
||||
else:
|
||||
|
@ -183,6 +192,8 @@ def __usage():
|
|||
Affiche ce message d'aide.
|
||||
-v / --verbose :
|
||||
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.
|
||||
"""
|
||||
|
@ -196,15 +207,17 @@ if __name__ == "__main__":
|
|||
__usage_brief()
|
||||
|
||||
try:
|
||||
options, arg = getopt.gnu_getopt(sys.argv[1:],'ab:p:hv',
|
||||
['all','bats=','prises=','help','verbose'])
|
||||
options, arg = getopt.gnu_getopt(sys.argv[1:],'ab:p:hvm',
|
||||
['all','bats=','prises=','help','verbose','macresearch'])
|
||||
except getopt.error, msg :
|
||||
__usage_brief(unicode(msg))
|
||||
|
||||
# Traitement des options
|
||||
verb = False
|
||||
|
||||
bats = ''
|
||||
all_prises = False
|
||||
macres = False
|
||||
|
||||
for opt, val in options:
|
||||
if opt == '-a' or opt == '--all':
|
||||
|
@ -227,6 +240,9 @@ if __name__ == "__main__":
|
|||
elif opt == '-v' or opt == '--verbose':
|
||||
verb = True
|
||||
|
||||
elif opt == '-m' or opt == '--macresearch':
|
||||
macres = True
|
||||
|
||||
if not bats:
|
||||
__usage_brief(u"il faut spécifier des bâtiments à scanner")
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue