On 7/3/07, ara.t.howard <ara.t.howard / gmail.com> wrote:
>      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

This works fine on unmodified FreeBSD 6.2