Daniel Crespo wrote: > Hi, I tried: > > import ctypes > import socket > import struct > > def get_macaddress(host): > """ Returns the MAC address of a network host, requires >= WIN2K. > """ > > # Check for api availability > try: > SendARP = ctypes.windll.Iphlpapi.SendARP > except: > raise NotImplementedError('Usage only on Windows 2000 and > above') > > # Doesn't work with loopbacks, but let's try and help. > if host == '127.0.0.1' or host.lower() == 'localhost': > host = socket.gethostname() > > # gethostbyname blocks, so use it wisely. > try: > inetaddr = ctypes.windll.wsock32.inet_addr(host) > if inetaddr in (0, -1): > raise Exception > except: > hostip = socket.gethostbyname(host) > inetaddr = ctypes.windll.wsock32.inet_addr(hostip) > > buffer = ctypes.c_buffer(6) > addlen = ctypes.c_ulong(ctypes.sizeof(buffer)) > if SendARP(inetaddr, 0, ctypes.byref(buffer), ctypes.byref(addlen)) > != 0: > raise WindowsError('Retreival of mac address(%s) - failed' % > host) > > # Convert binary data into a string. > macaddr = '' > for intval in struct.unpack('BBBBBB', buffer): > if intval > 15: > replacestr = '0x' > else: > replacestr = 'x' > macaddr = ''.join([macaddr, hex(intval).replace(replacestr, > '')]) > > return macaddr.upper() > > if __name__ == '__main__': > print 'Your mac address is %s' % get_macaddress('localhost') > > It works perfect under W2K and above. But I would like to run it on > Win98 too. Any help? > Sorry that I can't help you in any way but have a question myself. Is there an OS independent way to get this thing(regardless of how to format it) in Python ? I know this may not matter if all you want is Windows but there is just another thread talking about one should write programs that is OS independent.
Is this a problem of the network library of python ? -- http://mail.python.org/mailman/listinfo/python-list