Class: Inspec::Resources::BSDInit

Inherits:
ServiceManager show all
Defined in:
lib/inspec/resources/service.rb

Overview

Instance Attribute Summary

Attributes inherited from ServiceManager

#inspec, #service_ctl

Instance Method Summary collapse

Constructor Details

#initialize(service_name, service_ctl = nil) ⇒ BSDInit

Returns a new instance of BSDInit.



466
467
468
469
# File 'lib/inspec/resources/service.rb', line 466

def initialize(service_name, service_ctl = nil)
  @service_ctl = service_ctl || "service"
  super
end

Instance Method Details

#info(service_name) ⇒ Object



471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
# File 'lib/inspec/resources/service.rb', line 471

def info(service_name)
  # check if service is enabled
  # services are enabled in /etc/rc.conf and /etc/defaults/rc.conf
  # via #{service_name}_enable="YES"
  # service SERVICE status returns the following result if not activated:
  #   Cannot 'status' sshd. Set sshd_enable to YES in /etc/rc.conf or use 'onestatus' instead of 'status'.
  # gather all enabled services
  cmd = inspec.command("#{service_ctl} -e")
  return nil if cmd.exit_status != 0

  # search for the service
  srv = /(^.*#{service_name}$)/.match(cmd.stdout)
  return nil if srv.nil? || srv[0].nil?

  enabled = true

  # check if the service is running
  # if the service is not available or not running, we always get an error code
  cmd = inspec.command("#{service_ctl} #{service_name} onestatus")
  running = cmd.exit_status == 0

  {
    name: service_name,
    description: nil,
    installed: true,
    running: running,
    enabled: enabled,
    type: "bsd-init",
  }
end