class SearchMacAddress::AddrMac

Public Class Methods

by_popen() click to toggle source
# File lib/search_mac_address/addr_mac.rb, line 30
def by_popen
  regex = %r<(?:hwaddr|:)\s+((?:[0-9a-f]{1,2}[-:]){5}[0-9a-f]{1,2})\s*$>i
  res =
    begin
      IO.popen('ifconfig'){|fd| fd.readlines}
    rescue
      IO.popen('ipconfig /all'){|fd| fd.readlines}
    end
  addresses = res.map{|row| regex.match( row )[1] rescue nil }.compact
  return addresses
end
by_socket() click to toggle source
# File lib/search_mac_address/addr_mac.rb, line 20
def by_socket
  addresses = []
  Socket.getifaddrs.each do |get_addr|
    next unless get_addr.addr.pfamily == Socket::PF_PACKET if Socket.const_defined?(:PF_PACKET)
    addr = get_addr.addr.inspect_sockaddr[/hwaddr=([\h:]+)/,1]
    addresses << addr if addr != "00:00:00:00:00:00"
  end
  return addresses
end
get_physical_address() click to toggle source
# File lib/search_mac_address/addr_mac.rb, line 6
def get_physical_address
  res = by_socket
  if res.any?
    return res
  end

  rec = by_popen
  if rec.any?
    return rec
  end

  p "Rec not found"  
end