Sha256: 044131a3a259938e3094d798bb9259fa5939411e22a27a109368c53a34598d5e

Contents?: true

Size: 1.6 KB

Versions: 48

Compression:

Stored size: 1.6 KB

Contents

# encoding: utf-8
# copyright: 2015, Vulcano Security GmbH
# author: Dominik Richter
# author: Christoph Hartmann
# license: All rights reserved

module Inspec::Resources
  class Cmd < Inspec.resource(1)
    name 'command'
    desc 'Use the command InSpec audit resource to test an arbitrary command that is run on the system.'
    example "
      describe command('ls -al /') do
        its('stdout') { should match /bin/ }
        its('stderr') { should eq '' }
        its('exit_status') { should eq 0 }
      end

      command('ls -al /').exist? will return false. Existence of command should be checked this way.
      describe command('ls') do
        it { should exist }
      end
    "

    attr_reader :command

    def initialize(cmd)
      @command = cmd
    end

    def result
      @result ||= inspec.backend.run_command(@command)
    end

    def stdout
      result.stdout
    end

    def stderr
      result.stderr
    end

    def exit_status
      result.exit_status.to_i
    end

    def exist?
      # silent for mock resources
      return false if inspec.os[:name].to_s == 'unknown'

      if inspec.os.linux?
        res = inspec.backend.run_command("bash -c 'type \"#{@command}\"'")
      elsif inspec.os.windows?
        res = inspec.backend.run_command("where.exe \"#{@command}\"")
      elsif inspec.os.unix?
        res = inspec.backend.run_command("type \"#{@command}\"")
      else
        warn "`command(#{@command}).exist?` is not suported on your OS: #{inspec.os[:name]}"
        return false
      end
      res.exit_status.to_i == 0
    end

    def to_s
      "Command #{@command}"
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
inspec-1.26.0 lib/resources/command.rb
inspec-1.25.1 lib/resources/command.rb
inspec-1.25.0 lib/resources/command.rb
inspec-1.24.0 lib/resources/command.rb
inspec-1.23.0 lib/resources/command.rb
inspec-1.22.0 lib/resources/command.rb
inspec-1.21.0 lib/resources/command.rb
inspec-1.20.0 lib/resources/command.rb
inspec-1.19.2 lib/resources/command.rb
inspec-1.19.1 lib/resources/command.rb
inspec-1.19.0 lib/resources/command.rb
inspec-1.18.0 lib/resources/command.rb
inspec-1.17.0 lib/resources/command.rb
inspec-1.16.1 lib/resources/command.rb
inspec-1.16.0 lib/resources/command.rb
inspec-1.15.0 lib/resources/command.rb
inspec-1.14.1 lib/resources/command.rb
inspec-1.14.0 lib/resources/command.rb
inspec-1.13.0 lib/resources/command.rb
inspec-1.12.0 lib/resources/command.rb