class Inspec::Resources::Interfaces
Attributes
iface_data[R]
Public Instance Methods
ipv4_address()
click to toggle source
# File lib/inspec/resources/interfaces.rb, line 26 def ipv4_address require "ipaddr" unless defined?(IPAddr) # Loop over interface names # Select those that are up and have an ipv4 address interfaces = names.map { |n| inspec.interface(n) }.select do |i| i.ipv4_address? && i.up? end addrs = interfaces.map(&:ipv4_addresses).flatten.map { |a| IPAddr.new(a) } # Look for progressively "better" IP addresses [ # Loopback and private IP ranges IPAddr.new("127.0.0.0/8"), IPAddr.new("192.168.0.0/16"), IPAddr.new("172.16.0.0/12"), IPAddr.new("10.0.0.0/8"), ].each do |private_range| filtered_addrs = addrs.reject { |a| private_range.include?(a) } if filtered_addrs.empty? # Everything we had was a private or loopback IP. Return the "best" thing we were left with. return addrs.first.to_s end addrs = filtered_addrs end addrs.first.to_s end
to_s()
click to toggle source
# File lib/inspec/resources/interfaces.rb, line 18 def to_s "Interfaces" end
Private Instance Methods
scan_interfaces()
click to toggle source
# File lib/inspec/resources/interfaces.rb, line 58 def scan_interfaces @iface_data ||= begin provider = LinuxInterfaceLister.new(inspec) if inspec.os.linux? provider = WindowsInterfaceLister.new(inspec) if inspec.os.windows? provider = BsdInterfaceLister.new(inspec) if inspec.os.bsd? # includes macOS Array(provider && provider.scan_interfaces) end end