inspec/lib/resources/kernel_module.rb

42 lines
1.2 KiB
Ruby
Raw Normal View History

2015-09-20 16:32:50 +00:00
# encoding: utf-8
2015-10-06 16:55:44 +00:00
# author: Christoph Hartmann
# author: Dominik Richter
2015-09-20 16:32:50 +00:00
# license: All rights reserved
2015-10-26 03:04:18 +00:00
class KernelModule < Inspec.resource(1)
2015-09-20 16:32:50 +00:00
name 'kernel_module'
2015-11-27 13:02:38 +00:00
desc 'Use the kernel_module InSpec audit resource to test kernel modules on Linux platforms. These parameters are located under /lib/modules. Any submodule may be tested using this resource.'
example "
describe kernel_module('bridge') do
it { should be_loaded }
end
"
2015-09-20 16:32:50 +00:00
def initialize(modulename = nil)
@module = modulename
# this resource is only supported on Linux
2015-10-26 03:04:18 +00:00
return skip_resource 'The `kernel_parameter` resource is not supported on your OS.' if !inspec.os.linux?
2015-09-20 16:32:50 +00:00
end
def loaded?
# default lsmod command
lsmod_cmd = 'lsmod'
# special care for CentOS 5 and sudo
2015-10-26 03:04:18 +00:00
lsmod_cmd = '/sbin/lsmod' if inspec.os[:family] == 'centos' && inspec.os[:release].to_i == 5
2015-09-20 16:32:50 +00:00
# get list of all modules
2015-10-26 03:04:18 +00:00
cmd = inspec.command(lsmod_cmd)
return false if cmd.exit_status != 0
2015-09-20 16:32:50 +00:00
# check if module is loaded
re = Regexp.new('^'+Regexp.quote(@module)+'\s')
found = cmd.stdout.match(re)
!found.nil?
2015-09-20 16:32:50 +00:00
end
def to_s
"Kernel Module #{@module}"
end
end