On Wed, Jul 04, 2007 at 04:36:47AM +0900, Jeff Barczewski wrote:
> On 7/3/07, ara.t.howard <ara.t.howard / gmail.com> wrote:
[snip]
>>      def mac_address
>>        return @mac_address if defined? @mac_address
>>        re = %r/[^:\-](?:[0-9A-Za-z][0-9A-Za-z][:\-]){5}[0-9A-Za-z]
>> [0-9A-Za-z][^:\-]/o
>>        cmds = '/sbin/ifconfig', '/bin/ifconfig', 'ifconfig',
>> 'ipconfig /all'
>> 
>>        null = test(?e, '/dev/null') ? '/dev/null' : 'NUL'
>> 
>>        lines = nil
>>        cmds.each do |cmd|
>>          stdout = IO.popen("#{ cmd } 2> #{ null }"){|fd|
>> fd.readlines} rescue next
>>                                     #
>>                                     # ok on windoze?
>>          next unless stdout and stdout.size > 0
>>          lines = stdout and break
>>        end
>>        raise "all of #{ cmds.join ' ' } failed" unless lines
>> 
>>        candidates = lines.select{|line| line =~ re}
>>        raise 'no mac address candidates' unless candidates.first
>> 
>>        maddr = candidates.first[re]
>>        raise 'no mac address found' unless maddr
>>        @mac_address = maddr.strip
>>      end
>> 
>> ??
> 
> 
> 
> yes, that's a winner.
> 
> works on win xp
> works on gentoo linux
> 
> :-)

Fwiw, works on FreeBSD, too.

-- 
Jos Backus
jos at catnook.com