Accessor for the system's first MAC address, requires a call to address first
Discovers and returns the system's MAC addresses. Returns the first MAC address, and includes an accessor list for the remaining addresses:
Mac.addr # => first address Mac.addr.list # => all addresses
# File lib/macaddr.rb, line 54 def address return @mac_address if defined? @mac_address and @mac_address re = /[^:\-](?:[0-9A-F][0-9A-F][:\-]){5}[0-9A-F][0-9A-F][^:\-]/o cmds = '/sbin/ifconfig', '/bin/ifconfig', 'ifconfig', 'ipconfig /all', 'cat /sys/class/net/*/address' null = test(e, '/dev/null') ? '/dev/null' : 'NUL' output = nil cmds.each do |cmd| status, stdout, stderr = systemu(cmd) rescue next next unless stdout and stdout.size > 0 output = stdout and break end raise "all of #{ cmds.join ' ' } failed" unless output @mac_address = parse(output) end
# File lib/macaddr.rb, line 32 def Mac.dependencies { 'systemu' => [ 'systemu' , '~> 2.5.0' ] } end
# File lib/macaddr.rb, line 83 def list() @list end
# File lib/macaddr.rb, line 72 def parse(output) lines = output.split(/\n/) candidates = lines.select{|line| line =~ RE} raise 'no mac address candidates' unless candidates.first candidates.map!{|c| c[RE].strip} maddr = candidates.first raise 'no mac address found' unless maddr maddr.strip! maddr.instance_eval{ @list = candidates; def list() @list end } maddr end
# File lib/macaddr.rb, line 28 def Mac.version ::Mac::VERSION end