Determining Ethernet HW Address
Jerome Chan
eviltofu at rocketmail.com
Tue Mar 28 11:48:28 EST 2000
In article <NJ0E4.5818$V56.23602 at news-server.bigpond.net.au>, "Mark
Hammond" <mhammond at skippinet.com.au> wrote:
> "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.
>
>
The question had a portable section :P which was my main question. I've
need the ethernet hw address given an IP and the Python code runs on
Win32 and Linux... so...
More information about the Python-list
mailing list