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