mirror of
https://github.com/inspec/inspec
synced 2024-11-15 01:17:08 +00:00
commit
fc9bc11b71
3 changed files with 62 additions and 29 deletions
19
README.md
19
README.md
|
@ -44,7 +44,9 @@ You should now be able to run:
|
|||
vulcano --help
|
||||
```
|
||||
|
||||
## Configuration
|
||||
## Usage
|
||||
|
||||
### exec
|
||||
|
||||
Run tests against different targets:
|
||||
|
||||
|
@ -62,6 +64,21 @@ vulcano exec test.rb -t winrm://Administrator@windowshost --password 'your-passw
|
|||
vulcano exec test.rb -t docker://container_id
|
||||
```
|
||||
|
||||
### detect
|
||||
|
||||
Verify your configuration and detect
|
||||
|
||||
```bash
|
||||
id=$( docker run -dti ubuntu:14.04 /bin/bash )
|
||||
vulcano detect -t docker://$id
|
||||
```
|
||||
|
||||
Which will provide you with:
|
||||
|
||||
```
|
||||
{"family":"ubuntu","release":"14.04","arch":null}
|
||||
```
|
||||
|
||||
## Custom resources
|
||||
|
||||
You can easily create your own resources. Here is a custom resource for an
|
||||
|
|
64
bin/vulcano
64
bin/vulcano
|
@ -42,33 +42,37 @@ class VulcanoCLI < Thor
|
|||
end
|
||||
end
|
||||
|
||||
def self.target_options
|
||||
option :target, aliases: :t, type: :string, default: nil,
|
||||
desc: 'Simple targeting option using URIs, e.g. ssh://user:pass@host:port'
|
||||
option :backend, aliases: :b, type: :string, default: nil,
|
||||
desc: 'Choose a backend: local, ssh, winrm, docker.'
|
||||
option :host, type: :string,
|
||||
desc: 'Specify a remote host which is tested.'
|
||||
option :port, type: :numeric,
|
||||
desc: 'Specify the login port for a remote scan.'
|
||||
option :user, type: :string, default: nil,
|
||||
desc: 'The login user for a remote scan.'
|
||||
option :password, type: :string, default: nil,
|
||||
desc: 'Login password for a remote scan, if required.'
|
||||
option :key_file, type: :string, default: nil,
|
||||
desc: 'Login key or certificate file for a remote scan.'
|
||||
option :disable_sudo, type: :boolean, default: false,
|
||||
desc: 'To not run remote scans via sudo.'
|
||||
option :sudo_password, type: :string, default: nil,
|
||||
desc: 'Specify a sudo password, if it is required.'
|
||||
option :sudo_options, type: :string, default: '',
|
||||
desc: 'Additional sudo options for a remote scan.'
|
||||
option :winrm_self_signed, type: :boolean, default: false,
|
||||
desc: 'Allow remote scans with WinRM to run on self-signed certificates.'
|
||||
option :winrm_ssl, type: :boolean, default: false,
|
||||
desc: 'Configure WinRM scans to run via SSL instead of pure HTTP.'
|
||||
end
|
||||
|
||||
desc 'exec PATHS', 'run all test files'
|
||||
option :id, type: :string,
|
||||
desc: 'Attach a profile ID to all test results'
|
||||
option :target, aliases: :t, type: :string, default: nil,
|
||||
desc: 'Simple targeting option using URIs, e.g. ssh://user:pass@host:port'
|
||||
option :backend, aliases: :b, type: :string, default: nil,
|
||||
desc: 'Choose a backend: local, ssh, winrm, docker.'
|
||||
option :host, type: :string,
|
||||
desc: 'Specify a remote host which is tested.'
|
||||
option :port, type: :numeric,
|
||||
desc: 'Specify the login port for a remote scan.'
|
||||
option :user, type: :string, default: nil,
|
||||
desc: 'The login user for a remote scan.'
|
||||
option :password, type: :string, default: nil,
|
||||
desc: 'Login password for a remote scan, if required.'
|
||||
option :key_file, type: :string, default: nil,
|
||||
desc: 'Login key or certificate file for a remote scan.'
|
||||
option :disable_sudo, type: :boolean, default: false,
|
||||
desc: 'To not run remote scans via sudo.'
|
||||
option :sudo_password, type: :string, default: nil,
|
||||
desc: 'Specify a sudo password, if it is required.'
|
||||
option :sudo_options, type: :string, default: '',
|
||||
desc: 'Additional sudo options for a remote scan.'
|
||||
option :winrm_self_signed, type: :boolean, default: false,
|
||||
desc: 'Allow remote scans with WinRM to run on self-signed certificates.'
|
||||
option :winrm_ssl, type: :boolean, default: false,
|
||||
desc: 'Configure WinRM scans to run via SSL instead of pure HTTP.'
|
||||
target_options
|
||||
option :format, type: :string, default: 'progress'
|
||||
def exec(*tests)
|
||||
runner = Vulcano::Runner.new(options)
|
||||
|
@ -77,5 +81,17 @@ class VulcanoCLI < Thor
|
|||
rescue RuntimeError => e
|
||||
puts e.message
|
||||
end
|
||||
|
||||
desc 'detect', 'detect the target OS'
|
||||
target_options
|
||||
def detect
|
||||
runner = Vulcano::Runner.new(options)
|
||||
rel = File.join(File.dirname(__FILE__), *%w{.. lib utils detect.rb})
|
||||
detect_util = File.expand_path(rel)
|
||||
runner.add_tests([detect_util])
|
||||
runner.run
|
||||
rescue RuntimeError => e
|
||||
puts e.message
|
||||
end
|
||||
end
|
||||
VulcanoCLI.start(ARGV)
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
|
||||
# print OS detection infos
|
||||
conf = {
|
||||
os_name: os[:name],
|
||||
os_family: os[:family],
|
||||
os_release: os[:release],
|
||||
os_arch: os[:arch],
|
||||
name: os[:name],
|
||||
family: os[:family],
|
||||
release: os[:release],
|
||||
arch: os[:arch],
|
||||
}
|
||||
puts JSON.dump(conf)
|
||||
exit 0
|
||||
|
|
Loading…
Reference in a new issue