Determining Ethernet HW Address
Mark Hammond
mhammond at skippinet.com.au
Tue Mar 28 06:30:53 EST 2000
"Darrell" <darrell at dorb.com> wrote in message
news:dhSD4.7202$JE5.97355 at typhoon.nyroc.rr.com...
> "Jerome Chan" <eviltofu at rocketmail.com> wrote in message
> > Is there a portable way of determining the Ethernet HW
Address?
> >
> For windows without using Win32 try parsing the output of
ipconfig /all
I couldnt resist :-) In win32all-130 you will be able to use the
Netbios function:
from netbios import *
# code ported from "HOWTO: Get the MAC Address for an
Ethernet Adapter"
# MS KB ID: Q118623
ncb = NCB()
ncb.Command = NCBENUM
la_enum = LANA_ENUM()
ncb.Buffer = la_enum
rc = Netbios(ncb)
if rc != 0: raise RuntimeError, "Unexpected result %d" %
(rc,)
for i in range(la_enum.length):
ncb.Reset()
ncb.Command = NCBRESET
ncb.Lana_num = ord(la_enum.lana[i])
rc = Netbios(ncb)
if rc != 0: raise RuntimeError, "Unexpected result %d" %
(rc,)
ncb.Reset()
ncb.Command = NCBASTAT
ncb.Lana_num = ord(la_enum.lana[i])
ncb.Callname = "* "
adapter = ADAPTER_STATUS()
ncb.Buffer = adapter
Netbios(ncb)
print "Adapter address:",
for ch in adapter.adapter_address:
print "%02x" % (ord(ch),) ,
print
Yields on my dual-NIC server:
Adapter address: 00 a0 cc 54 22 2d
Adapter address: 00 40 05 6b fc ca
(both of which are correct :-)
Mark.
More information about the Python-list
mailing list