Class: Inspec::Resources::SolarisPorts

Inherits:
FreeBsdPorts show all
Includes:
SolarisNetstatParser
Defined in:
lib/resources/port.rb

Instance Attribute Summary

Attributes inherited from PortsInfo

#inspec

Instance Method Summary collapse

Methods included from SolarisNetstatParser

#parse_netstat

Methods inherited from FreeBsdPorts

#parse_net_address, #parse_sockstat_line

Methods inherited from PortsInfo

#initialize

Constructor Details

This class inherits a constructor from Inspec::Resources::PortsInfo

Instance Method Details

#infoObject



403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
# File 'lib/resources/port.rb', line 403

def info
  # extract all port info
  cmd = inspec.command('netstat -an -f inet -f inet6')
  return nil if cmd.exit_status.to_i != 0

  # parse the content
  netstat_ports = parse_netstat(cmd.stdout)

  # filter all ports, where we listen
  listen = netstat_ports.select { |val|
    !val['state'].nil? && 'listen'.casecmp(val['state']) == 0
  }

  # map the data
  ports = listen.map { |val|
    protocol = val['protocol']
    local_addr = val['local-address']

    # solaris uses 127.0.0.1.57455 instead 127.0.0.1:57455, lets convert the
    # the last . to :
    local_addr[local_addr.rindex('.')] = ':'
    host, port = parse_net_address(local_addr, protocol)
    {
      port: port,
      address: host,
      protocol: protocol,
      process: nil, # we do not have pid on solaris
      pid: nil, # we do not have pid on solaris
    }
  }
  ports
end