#! /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, tableau, switch, mac = None) : threading.Thread.__init__(self) self.tableau=tableau self.switch = switch self.mac = mac self.start() def run (self) : sw = hpswitch(self.switch) prise = sw.where_is_mac(self.mac) if prise != None : self.tableau.append("%-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 get_trace(mac): tableau=[] for switch in ['backbone'] + all_switchs(): interroge_switch(tableau,switch, mac) while len(threading.enumerate()) > 1 : sleep(1) resultat ='tracage de %s\n' % mac resultat += '\n'.join(tableau) return resultat # on interroge les switchs et on fait un whos sur la mac if __name__ == '__main__': mac = format_mac(sys.argv[1]) print get_trace(mac) print system('/usr/scripts/gestion/whos.py -a mac=%s' % mac)