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