Class: Inspec::Resources::SysV
- Inherits:
-
ServiceManager
- Object
- ServiceManager
- Inspec::Resources::SysV
- Defined in:
- lib/resources/service.rb
Constant Summary collapse
- RUNLEVELS =
{ 0=>false, 1=>false, 2=>false, 3=>false, 4=>false, 5=>false, 6=>false }.freeze
Instance Attribute Summary
Attributes inherited from ServiceManager
Instance Method Summary collapse
- #info(service_name) ⇒ Object
-
#initialize(service_name, service_ctl = nil) ⇒ SysV
constructor
A new instance of SysV.
Constructor Details
#initialize(service_name, service_ctl = nil) ⇒ SysV
Returns a new instance of SysV.
349 350 351 352 |
# File 'lib/resources/service.rb', line 349 def initialize(service_name, service_ctl = nil) @service_ctl = service_ctl || 'service' super end |
Instance Method Details
#info(service_name) ⇒ Object
354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 |
# File 'lib/resources/service.rb', line 354 def info(service_name) # check if service is installed # read all available services via ls /etc/init.d/ srvlist = inspec.command('ls -1 /etc/init.d/') return nil if srvlist.exit_status != 0 # check if the service is in list service = srvlist.stdout.split("\n").select { |srv| srv == service_name } # abort if we could not find any service return nil if service.empty? # read all enabled services from runlevel # on rhel via: 'chkconfig --list', is not installed by default # bash: for i in `find /etc/rc*.d -name S*`; do basename $i | sed -r 's/^S[0-9]+//'; done | sort | uniq enabled_services_cmd = inspec.command('find /etc/rc*.d -name S*') service_line = %r{rc(?<runlevel>[0-6])\.d/S[^/]*?#{Regexp.escape service_name}$} all_services = enabled_services_cmd.stdout.split("\n").map { |line| service_line.match(line) }.compact enabled = !all_services.empty? # Determine a list of runlevels which this service is activated for runlevels = RUNLEVELS.dup all_services.each { |x| runlevels[x[:runlevel].to_i] = true } # check if service is really running # service throws an exit code if the service is not installed or # not enabled cmd = inspec.command("#{service_ctl} #{service_name} status") running = cmd.exit_status == 0 { name: service_name, description: nil, installed: true, running: running, enabled: enabled, runlevels: runlevels, type: 'sysv', } end |