# Macaddr-1.0.0

**URL:** <https://www.ruby-forum.com/t/macaddr-1-0-0/145008>\
**Category:** Ruby\
**Created:** [August 5, 2008, 4:55am UTC](https://www.ruby-forum.com/t/macaddr-1-0-0/145008 "2008-08-05T04:55:41Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ahoward](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/779978/32.png) [@ahoward](https://www.ruby-forum.com/u/ahoward)\
**Post date:** [August 5, 2008, 4:55am UTC](https://www.ruby-forum.com/t/macaddr-1-0-0/145008/1 "2008-08-05T04:55:41Z")

</div>

NAME

macaddr

DESCRIPTION

cross platform mac address determination for ruby

URI

[http://codeforpeople.com/lib/ruby](http://codeforpeople.com/lib/ruby)  
[http://rubyforg.org/projects/codeforpeople](http://rubyforg.org/projects/codeforpeople)

INSTALL

gem install macaddr

HISTORY

1.0.0:

```
 - rdoc added

 - eric hodel kicks ass. to find why, see

   http://drawohara.com/post/44678286/eric-hodel-kicks-ass

```

SYNOPSIS

require ‘macaddr’

Mac.addr #=\> first mac addr on your system  
Mac.addr.list #=\> all mac addrs on your system

enjoy.

a @ [http://codeforpeople.com/](http://codeforpeople.com/)

---

<div class="post-metadata">

**Author:** ![ahoward](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/779978/32.png) [@ahoward](https://www.ruby-forum.com/u/ahoward)\
**Post date:** [August 5, 2008, 5:55am UTC](https://www.ruby-forum.com/t/macaddr-1-0-0/145008/2 "2008-08-05T05:55:54Z")

</div>

ara howard wrote:

> Mac.addr #=\> first mac addr on your system  
> Mac.addr.list #=\> all mac addrs on your system

This Python library may be of interest:

[http://mail.python.org/pipermail/python-win32/2005-September/003746.html](http://mail.python.org/pipermail/python-win32/2005-September/003746.html)

Covers pretty much every which way to get the info without shelling out.

Regards,

Dan

---

<div class="post-metadata">

**Author:** ![ahoward](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/779978/32.png) [@ahoward](https://www.ruby-forum.com/u/ahoward)\
**Post date:** [August 5, 2008, 6:12am UTC](https://www.ruby-forum.com/t/macaddr-1-0-0/145008/3 "2008-08-05T06:12:52Z")

</div>

\<(05/08/08 11:53) ara howard\>

> ```
> - eric hodel kicks ass. to find why, see
> 
> http://drawohara.com/post/44678286/eric-hodel-kicks-ass
> 
> ```

You’re both awesome, thanks for the code!  
–mg

---

<div class="post-metadata">

**Author:** ![ahoward](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/779978/32.png) [@ahoward](https://www.ruby-forum.com/u/ahoward)\
**Post date:** [August 5, 2008, 9:45am UTC](https://www.ruby-forum.com/t/macaddr-1-0-0/145008/4 "2008-08-05T09:45:44Z")

</div>

On Tue, Aug 5, 2008 at 9:23 AM, Daniel B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > URI  
> > 1.0.0:
> > 
> > Mac.addr #=\> first mac addr on your system  
> > Mac.addr.list #=\> all mac addrs on your system
> 
> This Python library may be of interest:
> 
> [[python-win32] detecting windows type](http://mail.python.org/pipermail/python-win32/2005-September/003746.html)
> 
> Covers pretty much every which way to get the info without shelling out.

But, if you use Python, you are selling out!

---

<div class="post-metadata">

**Author:** ![ahoward](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/779978/32.png) [@ahoward](https://www.ruby-forum.com/u/ahoward)\
**Post date:** [August 5, 2008, 3:37pm UTC](https://www.ruby-forum.com/t/macaddr-1-0-0/145008/5 "2008-08-05T15:37:51Z")

</div>

ara.t.howard wrote:

> > 
> 
> line[:1].isspace()]  
> “”“parses the output of windows ipconfig to find MAC addresses”""  
> ipaddress, mac = None, None  
> add it  
> Yes, that’s all I meant - that it had a bunch of alternative  
> implementations.

Regards,

Dan

---

<div class="post-metadata">

**Author:** ![ahoward](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/779978/32.png) [@ahoward](https://www.ruby-forum.com/u/ahoward)\
**Post date:** [August 5, 2008, 4:08pm UTC](https://www.ruby-forum.com/t/macaddr-1-0-0/145008/6 "2008-08-05T16:08:24Z")

</div>

ara.t.howard wrote:  
line for line in lines if line and not line[:1].isspace()

Boy, that’s readable.

-Dana

---

<div class="post-metadata">

**Author:** ![ahoward](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/779978/32.png) [@ahoward](https://www.ruby-forum.com/u/ahoward)\
**Post date:** [August 5, 2008, 6:24am UTC](https://www.ruby-forum.com/t/macaddr-1-0-0/145008/7 "2008-08-05T06:24:33Z")

</div>

On Aug 4, 2008, at 9:53 PM, Daniel B. wrote:

> This Python library may be of interest:
> 
> [[python-win32] detecting windows type](http://mail.python.org/pipermail/python-win32/2005-September/003746.html)
> 
> Covers pretty much every which way to get the info without shelling  
> out.
> 
> Regards,
> 
> Dan

hmmm - i don’t read too much python but this looks like shelling out:

def getmacs\_ifconfig():  
“”“parses the output of unix ifconfig to find mac addresses”“”  
lines = os.popen(“ifconfig”, “r”).readlines()  
headerlines = [line for line in lines if line and not  
line[:1].isspace()]  
for line in headerlines:  
parts = line.split()  
ifname = parts[0]  
if ‘HWaddr’ in parts:  
hwpart = parts.index(‘HWaddr’)  
if hwpart+1 \< len(parts):  
mac = parts[hwpart+1]  
yield mac

def getmacs\_ipconfig():  
“”“parses the output of windows ipconfig to find MAC addresses”“”  
lines = os.popen(“ipconfig /all”, “r”).readlines()  
for line in lines:  
if line and not line[:1].isspace():  
header = line  
ipaddress, mac = None, None  
elif line.strip():  
if line.strip().startswith(“IP Address”) and “:” in line:  
ipaddress = line.split(“:”, 1)[1].strip()  
if mac:  
yield mac  
ipaddress, mac = None, None  
if line.strip().startswith(“Physical Address”) and “:” in  
line:  
mac = line.split(“:”, 1)[1].strip()  
if ipaddress:  
yield mac  
ipaddress, mac = None, None

you are right that’s it’s more complete though! if anyone wants to  
add a test for their platform porting using this lib as ‘doc’ i’m  
happy to add it

cheers.

a @ [http://codeforpeople.com/](http://codeforpeople.com/)
