#! /usr/bin/env python # -*- coding: iso-8859-15 -*- import sys sys.path.append('/usr/scripts/gestion') from annuaires import reverse, all_switchs from hptools import hpswitch from time import sleep from os import system import threading # mise en forme d'une adresse mac def format_mac(unformated_mac): return ":".join([i.zfill(2) for i in unformated_mac.split(":")]).lower() # classe d'interrogation des switchs class interroge_switch (threading.Thread) : def __init__ (self, switch, mac = None) : threading.Thread.__init__(self) self.switch = switch self.mac = mac self.start() def run (self) : sw = hpswitch(self.switch) prise = sw.where_is_mac(mac) if prise != None : print "%-10s => prise %-2s : %s" % (self.switch.encode('iso-8859-15').replace('.adm.crans.org',''), str(prise), sw.nom(None, prise)) # interrogation des switchs en parallele def print_trace(mac): for switch in ['backbone'] + all_switchs(): interroge_switch(switch, mac) while len(threading.enumerate()) > 1 : sleep(1) # on interroge les switchs et on fait un whos sur la mac if __name__ == '__main__': mac = format_mac(sys.argv[1]) print_trace(mac) print system('/usr/scripts/gestion/whos.py -a mac=%s' % mac)