class LinuxAdmin::IpAddress

Public Instance Methods

address() click to toggle source
# File lib/linux_admin/ip_address.rb, line 5
def address
  address_list.detect { |ip| IPAddr.new(ip).ipv4? }
end
address6() click to toggle source
# File lib/linux_admin/ip_address.rb, line 9
def address6
  address_list.detect { |ip| IPAddr.new(ip).ipv6? }
end
gateway() click to toggle source
# File lib/linux_admin/ip_address.rb, line 27
def gateway
  result = Common.run(Common.cmd("ip"), :params => ["route"])
  return nil if result.failure?

  parse_output(result.output, /^default/, 2)
end
mac_address(interface) click to toggle source
# File lib/linux_admin/ip_address.rb, line 13
def mac_address(interface)
  result = Common.run(Common.cmd("ip"), :params => ["addr", "show", interface])
  return nil if result.failure?

  parse_output(result.output, %r{link/ether}, 1)
end
netmask(interface) click to toggle source
# File lib/linux_admin/ip_address.rb, line 20
def netmask(interface)
  result = Common.run(Common.cmd("ifconfig"), :params => [interface])
  return nil if result.failure?

  parse_output(result.output, /netmask/, 3)
end

Private Instance Methods

address_list() click to toggle source
# File lib/linux_admin/ip_address.rb, line 41
def address_list
  result = nil
  # Added retry to account for slow DHCP not assigning an IP quickly at boot; specifically:
  # https://github.com/ManageIQ/manageiq-appliance/commit/160d8ccbfbfd617bdb5445e56cdab66b9323b15b
  5.times do
    result = Common.run(Common.cmd("hostname"), :params => ["-I"])
    break if result.success?
  end

  result.success? ? result.output.split(' ') : []
end
parse_output(output, regex, col) click to toggle source
# File lib/linux_admin/ip_address.rb, line 36
def parse_output(output, regex, col)
  the_line = output.split("\n").detect { |l| l =~ regex }
  the_line.nil? ? nil : the_line.strip.split(' ')[col]
end