serverspec 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/serverspec.rb +0 -16
- data/lib/serverspec/version.rb +1 -1
- data/serverspec.gemspec +1 -1
- data/spec/backend/exec/configuration_spec.rb +7 -0
- data/spec/windows/file_spec.rb +1 -1
- data/spec/windows/group_spec.rb +1 -2
- data/spec/windows/user_spec.rb +1 -1
- metadata +120 -109
- checksums.yaml +0 -7
- data/lib/serverspec/commands/aix.rb +0 -69
- data/lib/serverspec/commands/base.rb +0 -305
- data/lib/serverspec/commands/darwin.rb +0 -42
- data/lib/serverspec/commands/debian.rb +0 -24
- data/lib/serverspec/commands/freebsd.rb +0 -23
- data/lib/serverspec/commands/gentoo.rb +0 -18
- data/lib/serverspec/commands/linux.rb +0 -70
- data/lib/serverspec/commands/plamo.rb +0 -21
- data/lib/serverspec/commands/redhat.rb +0 -32
- data/lib/serverspec/commands/smartos.rb +0 -21
- data/lib/serverspec/commands/solaris.rb +0 -117
- data/lib/serverspec/commands/solaris10.rb +0 -78
- data/lib/serverspec/commands/solaris11.rb +0 -7
- data/lib/serverspec/commands/windows.rb +0 -213
data/lib/serverspec.rb
CHANGED
@@ -6,24 +6,8 @@ require 'serverspec/matchers'
|
|
6
6
|
require 'serverspec/helper'
|
7
7
|
require 'serverspec/setup'
|
8
8
|
require 'serverspec/subject'
|
9
|
-
require 'serverspec/commands/base'
|
10
|
-
require 'serverspec/commands/linux'
|
11
|
-
require 'serverspec/commands/redhat'
|
12
|
-
require 'serverspec/commands/debian'
|
13
|
-
require 'serverspec/commands/gentoo'
|
14
|
-
require 'serverspec/commands/plamo'
|
15
|
-
require 'serverspec/commands/aix'
|
16
|
-
require 'serverspec/commands/solaris'
|
17
|
-
require 'serverspec/commands/solaris10'
|
18
|
-
require 'serverspec/commands/solaris11'
|
19
|
-
require 'serverspec/commands/smartos'
|
20
|
-
require 'serverspec/commands/darwin'
|
21
|
-
require 'serverspec/commands/windows'
|
22
|
-
require 'serverspec/commands/freebsd'
|
23
9
|
require 'rspec/core/formatters/base_formatter'
|
24
10
|
|
25
|
-
SPEC_TYPE = 'Serverspec'
|
26
|
-
|
27
11
|
module RSpec
|
28
12
|
module Core
|
29
13
|
module Formatters
|
data/lib/serverspec/version.rb
CHANGED
data/serverspec.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_runtime_dependency "net-ssh"
|
22
22
|
spec.add_runtime_dependency "rspec", ">= 2.13.0"
|
23
23
|
spec.add_runtime_dependency "highline"
|
24
|
-
spec.add_runtime_dependency "specinfra", ">= 0.0.
|
24
|
+
spec.add_runtime_dependency "specinfra", ">= 0.0.6"
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
26
26
|
spec.add_development_dependency "rake"
|
27
27
|
end
|
@@ -18,6 +18,13 @@ describe 'path is set' do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
describe 'path is reset to nil' do
|
22
|
+
context file('/etc/passwd') do
|
23
|
+
it { should be_file }
|
24
|
+
its(:command) { should eq 'test -f /etc/passwd' }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
21
28
|
describe 'pre_command is set' do
|
22
29
|
let(:pre_command) { 'source ~/.zshrc' }
|
23
30
|
context file('/etc/passwd') do
|
data/spec/windows/file_spec.rb
CHANGED
@@ -155,7 +155,7 @@ describe file('/some/test/file') do
|
|
155
155
|
:match_md5checksum => '35435ea447c19f0ea5ef971837ab9ced',
|
156
156
|
:match_sha256checksum => '0c3feee1353a8459f8c7d84885e6bc602ef853751ffdbce3e3b6dfa1d345fc7a'
|
157
157
|
}.each do |method, args|
|
158
|
-
expect { should self.send(method, *args) }.to raise_error
|
158
|
+
expect { should self.send(method, *args) }.to raise_error SpecInfra::Command::Windows::NotSupportedError
|
159
159
|
end
|
160
160
|
end
|
161
161
|
end
|
data/spec/windows/group_spec.rb
CHANGED
@@ -22,8 +22,7 @@ describe group('test.group') do
|
|
22
22
|
{
|
23
23
|
:have_gid => [nil],
|
24
24
|
}.each do |method, args|
|
25
|
-
expect { should self.send(method, *args) }.to raise_error
|
25
|
+
expect { should self.send(method, *args) }.to raise_error SpecInfra::Command::Windows::NotSupportedError
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
data/spec/windows/user_spec.rb
CHANGED
@@ -38,7 +38,7 @@ describe user('test.user') do
|
|
38
38
|
:have_login_shell => [nil],
|
39
39
|
:have_authorized_key => [nil],
|
40
40
|
}.each do |method, args|
|
41
|
-
expect { should self.send(method, *args) }.to raise_error
|
41
|
+
expect { should self.send(method, *args) }.to raise_error SpecInfra::Command::Windows::NotSupportedError
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
metadata
CHANGED
@@ -1,107 +1,122 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: serverspec
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 43
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 13
|
9
|
+
- 0
|
10
|
+
version: 0.13.0
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- Gosuke Miyashita
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
|
18
|
+
date: 2013-12-04 00:00:00 +09:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
14
22
|
name: net-ssh
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
23
|
prerelease: false
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 2.13.0
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
34
33
|
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rspec
|
35
37
|
prerelease: false
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 59
|
44
|
+
segments:
|
45
|
+
- 2
|
46
|
+
- 13
|
47
|
+
- 0
|
40
48
|
version: 2.13.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: highline
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
49
|
type: :runtime
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: highline
|
49
53
|
prerelease: false
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
- - '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.0.2
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
62
63
|
type: :runtime
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: specinfra
|
63
67
|
prerelease: false
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 19
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
- 0
|
77
|
+
- 6
|
78
|
+
version: 0.0.6
|
79
|
+
type: :runtime
|
80
|
+
version_requirements: *id004
|
81
|
+
- !ruby/object:Gem::Dependency
|
70
82
|
name: bundler
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ~>
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.3'
|
76
|
-
type: :development
|
77
83
|
prerelease: false
|
78
|
-
|
79
|
-
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
80
87
|
- - ~>
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
- - '>='
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 9
|
90
|
+
segments:
|
91
|
+
- 1
|
92
|
+
- 3
|
93
|
+
version: "1.3"
|
90
94
|
type: :development
|
95
|
+
version_requirements: *id005
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: rake
|
91
98
|
prerelease: false
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 3
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
version: "0"
|
108
|
+
type: :development
|
109
|
+
version_requirements: *id006
|
97
110
|
description: RSpec tests for your servers configured by Puppet, Chef or anything else
|
98
|
-
email:
|
111
|
+
email:
|
99
112
|
- gosukenator@gmail.com
|
100
|
-
executables:
|
113
|
+
executables:
|
101
114
|
- serverspec-init
|
102
115
|
extensions: []
|
116
|
+
|
103
117
|
extra_rdoc_files: []
|
104
|
-
|
118
|
+
|
119
|
+
files:
|
105
120
|
- .gitignore
|
106
121
|
- .travis.yml
|
107
122
|
- Gemfile
|
@@ -112,20 +127,6 @@ files:
|
|
112
127
|
- WINDOWS_SUPPORT.md
|
113
128
|
- bin/serverspec-init
|
114
129
|
- lib/serverspec.rb
|
115
|
-
- lib/serverspec/commands/aix.rb
|
116
|
-
- lib/serverspec/commands/base.rb
|
117
|
-
- lib/serverspec/commands/darwin.rb
|
118
|
-
- lib/serverspec/commands/debian.rb
|
119
|
-
- lib/serverspec/commands/freebsd.rb
|
120
|
-
- lib/serverspec/commands/gentoo.rb
|
121
|
-
- lib/serverspec/commands/linux.rb
|
122
|
-
- lib/serverspec/commands/plamo.rb
|
123
|
-
- lib/serverspec/commands/redhat.rb
|
124
|
-
- lib/serverspec/commands/smartos.rb
|
125
|
-
- lib/serverspec/commands/solaris.rb
|
126
|
-
- lib/serverspec/commands/solaris10.rb
|
127
|
-
- lib/serverspec/commands/solaris11.rb
|
128
|
-
- lib/serverspec/commands/windows.rb
|
129
130
|
- lib/serverspec/helper.rb
|
130
131
|
- lib/serverspec/helper/backend.rb
|
131
132
|
- lib/serverspec/helper/os.rb
|
@@ -359,31 +360,41 @@ files:
|
|
359
360
|
- spec/windows/service_spec.rb
|
360
361
|
- spec/windows/user_spec.rb
|
361
362
|
- spec/windows/windows_registry_key_spec.rb
|
363
|
+
has_rdoc: true
|
362
364
|
homepage: http://serverspec.org/
|
363
|
-
licenses:
|
365
|
+
licenses:
|
364
366
|
- MIT
|
365
|
-
metadata: {}
|
366
367
|
post_install_message:
|
367
368
|
rdoc_options: []
|
368
|
-
|
369
|
+
|
370
|
+
require_paths:
|
369
371
|
- lib
|
370
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
372
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
373
|
+
none: false
|
374
|
+
requirements:
|
375
|
+
- - ">="
|
376
|
+
- !ruby/object:Gem::Version
|
377
|
+
hash: 3
|
378
|
+
segments:
|
379
|
+
- 0
|
380
|
+
version: "0"
|
381
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
382
|
+
none: false
|
383
|
+
requirements:
|
384
|
+
- - ">="
|
385
|
+
- !ruby/object:Gem::Version
|
386
|
+
hash: 3
|
387
|
+
segments:
|
388
|
+
- 0
|
389
|
+
version: "0"
|
380
390
|
requirements: []
|
391
|
+
|
381
392
|
rubyforge_project:
|
382
|
-
rubygems_version:
|
393
|
+
rubygems_version: 1.6.2
|
383
394
|
signing_key:
|
384
|
-
specification_version:
|
395
|
+
specification_version: 3
|
385
396
|
summary: RSpec tests for your servers configured by Puppet, Chef or anything else
|
386
|
-
test_files:
|
397
|
+
test_files:
|
387
398
|
- spec/aix/command_spec.rb
|
388
399
|
- spec/aix/cron_spec.rb
|
389
400
|
- spec/aix/default_gateway_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 752400de68f58e7d7e2605e2d7249e19c7e9031f
|
4
|
-
data.tar.gz: ad2e694640b507b888251fc6e34af0df35164f1a
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: c9d8eb41562f89d01e9a3d13c482b213b05dbf8f8bcfa78da00c3890cb08b1443652c151fae61e81f71cdb2487f77c2ec6b175fd02f78b145f899f582dc2a7ce
|
7
|
-
data.tar.gz: 0ee62224c780f3e79f0152bcb382d4141435cde8accbd12f3e52511d73a2d70c0bd5762caeb8cfac7eda16458a63264524e3bf4ce79fd811b9e08f7683ff0dfb
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require 'shellwords'
|
2
|
-
|
3
|
-
module Serverspec
|
4
|
-
module Commands
|
5
|
-
class AIX < Base
|
6
|
-
class NotImplementedError < Exception; end
|
7
|
-
|
8
|
-
def check_access_by_user(file, user, access)
|
9
|
-
"su -s sh -c \"test -#{access} #{file}\" #{user}"
|
10
|
-
end
|
11
|
-
|
12
|
-
def check_enabled(service,level=nil)
|
13
|
-
"lssrc -s #{escape(service)} | grep active"
|
14
|
-
end
|
15
|
-
|
16
|
-
def check_running(service)
|
17
|
-
"ps -ef | grep -v grep | grep #{escape(service)}"
|
18
|
-
end
|
19
|
-
|
20
|
-
def check_installed(package,version)
|
21
|
-
|
22
|
-
if version
|
23
|
-
"lslpp -L #{escape(package)} | awk '{print $2}' | grep -w -- #{version}"
|
24
|
-
else
|
25
|
-
"lslpp -L #{escape(package)}"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def check_listening(port)
|
30
|
-
regexp = "*.#{port} "
|
31
|
-
"netstat -an -f inet | awk '{print $4}' | grep -- #{regexp}"
|
32
|
-
#"netstat -an -f inet | awk '{print $4}' | grep -- #{escape(regexp)}"
|
33
|
-
end
|
34
|
-
|
35
|
-
def check_belonging_group(user, group)
|
36
|
-
"lsuser -a groups #{escape(user)} | awk -F'=' '{print $2}'| sed -e 's/,/ /g' |grep -w -- #{escape(group)}"
|
37
|
-
end
|
38
|
-
|
39
|
-
def check_gid(group, gid)
|
40
|
-
regexp = "^#{group}"
|
41
|
-
"cat etc/group | grep -w -- #{escape(regexp)} | cut -f 3 -d ':' | grep -w -- #{escape(gid)}"
|
42
|
-
end
|
43
|
-
|
44
|
-
def check_login_shell(user, path_to_shell)
|
45
|
-
"lsuser -a shell #{escape(user)} |awk -F'=' '{print $2}' | grep -w -- #{escape(path_to_shell)}"
|
46
|
-
end
|
47
|
-
|
48
|
-
def check_home_directory(user, path_to_home)
|
49
|
-
"lsuser -a home #{escape(user)} | awk -F'=' '{print $2}' | grep -w -- #{escape(path_to_home)}"
|
50
|
-
end
|
51
|
-
|
52
|
-
def check_mode(file, mode)
|
53
|
-
raise NotImplementedError.new
|
54
|
-
end
|
55
|
-
|
56
|
-
def check_owner(file, owner)
|
57
|
-
regexp = "^#{owner}$"
|
58
|
-
"ls -al #{escape(file)} | awk '{print $3}' | grep -- #{escape(regexp)}"
|
59
|
-
end
|
60
|
-
|
61
|
-
def check_grouped(file, group)
|
62
|
-
regexp = "^#{group}$"
|
63
|
-
"ls -al #{escape(file)} | awk '{print $4}' | grep -- #{escape(regexp)}"
|
64
|
-
end
|
65
|
-
|
66
|
-
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
@@ -1,305 +0,0 @@
|
|
1
|
-
require 'shellwords'
|
2
|
-
|
3
|
-
module Serverspec
|
4
|
-
module Commands
|
5
|
-
class Base
|
6
|
-
class NotImplementedError < Exception; end
|
7
|
-
|
8
|
-
def escape(target)
|
9
|
-
str = case target
|
10
|
-
when Regexp
|
11
|
-
target.source
|
12
|
-
else
|
13
|
-
target.to_s
|
14
|
-
end
|
15
|
-
|
16
|
-
Shellwords.shellescape(str)
|
17
|
-
end
|
18
|
-
|
19
|
-
def check_enabled(service, level=3)
|
20
|
-
raise NotImplementedError.new
|
21
|
-
end
|
22
|
-
|
23
|
-
def check_yumrepo(repository)
|
24
|
-
raise NotImplementedError.new
|
25
|
-
end
|
26
|
-
|
27
|
-
def check_yumrepo_enabled(repository)
|
28
|
-
raise NotImplementedError.new
|
29
|
-
end
|
30
|
-
|
31
|
-
def check_mounted(path)
|
32
|
-
regexp = "on #{path}"
|
33
|
-
"mount | grep -w -- #{escape(regexp)}"
|
34
|
-
end
|
35
|
-
|
36
|
-
def check_routing_table(destination)
|
37
|
-
"ip route | grep -E '^#{destination} |^default '"
|
38
|
-
end
|
39
|
-
|
40
|
-
def check_reachable(host, port, proto, timeout)
|
41
|
-
if port.nil?
|
42
|
-
"ping -n #{escape(host)} -w #{escape(timeout)} -c 2"
|
43
|
-
else
|
44
|
-
"nc -vvvvz#{escape(proto[0].chr)} #{escape(host)} #{escape(port)} -w #{escape(timeout)}"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def check_resolvable(name, type)
|
49
|
-
if type == "dns"
|
50
|
-
"nslookup -timeout=1 #{escape(name)}"
|
51
|
-
elsif type == "hosts"
|
52
|
-
"grep -w -- #{escape(name)} /etc/hosts"
|
53
|
-
else
|
54
|
-
"getent hosts #{escape(name)}"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def check_file(file)
|
59
|
-
"test -f #{escape(file)}"
|
60
|
-
end
|
61
|
-
|
62
|
-
def check_socket(file)
|
63
|
-
"test -S #{escape(file)}"
|
64
|
-
end
|
65
|
-
|
66
|
-
def check_directory(directory)
|
67
|
-
"test -d #{escape(directory)}"
|
68
|
-
end
|
69
|
-
|
70
|
-
def check_user(user)
|
71
|
-
"id #{escape(user)}"
|
72
|
-
end
|
73
|
-
|
74
|
-
def check_group(group)
|
75
|
-
"getent group | grep -wq -- #{escape(group)}"
|
76
|
-
end
|
77
|
-
|
78
|
-
def check_installed(package, version=nil)
|
79
|
-
raise NotImplementedError.new
|
80
|
-
end
|
81
|
-
|
82
|
-
def check_listening(port)
|
83
|
-
regexp = ":#{port} "
|
84
|
-
"netstat -tunl | grep -- #{escape(regexp)}"
|
85
|
-
end
|
86
|
-
|
87
|
-
def check_listening_with_protocol(port, protocol)
|
88
|
-
regexp = "^#{protocol} .*:#{port} "
|
89
|
-
"netstat -tunl | grep -- #{escape(regexp)}"
|
90
|
-
end
|
91
|
-
|
92
|
-
def check_running(service)
|
93
|
-
"service #{escape(service)} status"
|
94
|
-
end
|
95
|
-
|
96
|
-
def check_running_under_supervisor(service)
|
97
|
-
"supervisorctl status #{escape(service)} | grep RUNNING"
|
98
|
-
end
|
99
|
-
|
100
|
-
def check_running_under_upstart(service)
|
101
|
-
"initctl status #{escape(service)} | grep running"
|
102
|
-
end
|
103
|
-
|
104
|
-
def check_monitored_by_monit(service)
|
105
|
-
"monit status"
|
106
|
-
end
|
107
|
-
|
108
|
-
def check_monitored_by_god(service)
|
109
|
-
"god status #{escape(service)}"
|
110
|
-
end
|
111
|
-
|
112
|
-
def check_process(process)
|
113
|
-
"ps aux | grep -w -- #{escape(process)} | grep -qv grep"
|
114
|
-
end
|
115
|
-
|
116
|
-
def check_file_contain(file, expected_pattern)
|
117
|
-
"#{check_file_contain_with_regexp(file, expected_pattern)} || #{check_file_contain_with_fixed_strings(file, expected_pattern)}"
|
118
|
-
end
|
119
|
-
|
120
|
-
def check_file_contain_with_regexp(file, expected_pattern)
|
121
|
-
"grep -q -- #{escape(expected_pattern)} #{escape(file)}"
|
122
|
-
end
|
123
|
-
|
124
|
-
def check_file_contain_with_fixed_strings(file, expected_pattern)
|
125
|
-
"grep -qF -- #{escape(expected_pattern)} #{escape(file)}"
|
126
|
-
end
|
127
|
-
|
128
|
-
def check_file_md5checksum(file, expected)
|
129
|
-
regexp = "^#{expected}"
|
130
|
-
"md5sum #{escape(file)} | grep -iw -- #{escape(regexp)}"
|
131
|
-
end
|
132
|
-
|
133
|
-
def check_file_sha256checksum(file, expected)
|
134
|
-
regexp = "^#{expected}"
|
135
|
-
"sha256sum #{escape(file)} | grep -iw -- #{escape(regexp)}"
|
136
|
-
end
|
137
|
-
|
138
|
-
def check_file_contain_within(file, expected_pattern, from=nil, to=nil)
|
139
|
-
from ||= '1'
|
140
|
-
to ||= '$'
|
141
|
-
sed = "sed -n #{escape(from)},#{escape(to)}p #{escape(file)}"
|
142
|
-
checker_with_regexp = check_file_contain_with_regexp("-", expected_pattern)
|
143
|
-
checker_with_fixed = check_file_contain_with_fixed_strings("-", expected_pattern)
|
144
|
-
"#{sed} | #{checker_with_regexp} || #{sed} | #{checker_with_fixed}"
|
145
|
-
end
|
146
|
-
|
147
|
-
def check_mode(file, mode)
|
148
|
-
regexp = "^#{mode}$"
|
149
|
-
"stat -c %a #{escape(file)} | grep -- #{escape(regexp)}"
|
150
|
-
end
|
151
|
-
|
152
|
-
def check_owner(file, owner)
|
153
|
-
regexp = "^#{owner}$"
|
154
|
-
"stat -c %U #{escape(file)} | grep -- #{escape(regexp)}"
|
155
|
-
end
|
156
|
-
|
157
|
-
def check_grouped(file, group)
|
158
|
-
regexp = "^#{group}$"
|
159
|
-
"stat -c %G #{escape(file)} | grep -- #{escape(regexp)}"
|
160
|
-
end
|
161
|
-
|
162
|
-
def check_cron_entry(user, entry)
|
163
|
-
entry_escaped = entry.gsub(/\*/, '\\*')
|
164
|
-
if user.nil?
|
165
|
-
"crontab -l | grep -- #{escape(entry_escaped)}"
|
166
|
-
else
|
167
|
-
"crontab -u #{escape(user)} -l | grep -- #{escape(entry_escaped)}"
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
def check_link(link, target)
|
172
|
-
"stat -c %N #{escape(link)} | grep -- #{escape(target)}"
|
173
|
-
end
|
174
|
-
|
175
|
-
def check_installed_by_gem(name, version=nil)
|
176
|
-
regexp = "^#{name}"
|
177
|
-
cmd = "gem list --local | grep -w -- #{escape(regexp)}"
|
178
|
-
cmd = "#{cmd} | grep -w -- #{escape(version)}" if version
|
179
|
-
cmd
|
180
|
-
end
|
181
|
-
|
182
|
-
def check_installed_by_npm(name, version=nil)
|
183
|
-
cmd = "npm ls #{escape(name)} -g"
|
184
|
-
cmd = "#{cmd} | grep -w -- #{escape(version)}" if version
|
185
|
-
cmd
|
186
|
-
end
|
187
|
-
|
188
|
-
def check_installed_by_pecl(name, version=nil)
|
189
|
-
regexp = "^#{name}"
|
190
|
-
cmd = "pecl list | grep -w -- #{escape(regexp)}"
|
191
|
-
cmd = "#{cmd} | grep -w -- #{escape(version)}" if version
|
192
|
-
cmd
|
193
|
-
end
|
194
|
-
|
195
|
-
def check_installed_by_pear(name, version=nil)
|
196
|
-
regexp = "^#{name}"
|
197
|
-
cmd = "pear list | grep -w -- #{escape(regexp)}"
|
198
|
-
cmd = "#{cmd} | grep -w -- #{escape(version)}" if version
|
199
|
-
cmd
|
200
|
-
end
|
201
|
-
|
202
|
-
def check_installed_by_pip(name, version=nil)
|
203
|
-
regexp = "^#{name}"
|
204
|
-
cmd = "pip list | grep -w -- #{escape(regexp)}"
|
205
|
-
cmd = "#{cmd} | grep -w -- #{escape(version)}" if version
|
206
|
-
cmd
|
207
|
-
end
|
208
|
-
|
209
|
-
def check_installed_by_cpan(name, version=nil)
|
210
|
-
regexp = "^#{name}"
|
211
|
-
cmd = "cpan -l | grep -w -- #{escape(regexp)}"
|
212
|
-
cmd = "#{cmd} | grep -w -- #{escape(version)}" if version
|
213
|
-
cmd
|
214
|
-
end
|
215
|
-
|
216
|
-
def check_belonging_group(user, group)
|
217
|
-
"id #{escape(user)} | awk '{print $3}' | grep -- #{escape(group)}"
|
218
|
-
end
|
219
|
-
|
220
|
-
def check_gid(group, gid)
|
221
|
-
regexp = "^#{group}"
|
222
|
-
"getent group | grep -w -- #{escape(regexp)} | cut -f 3 -d ':' | grep -w -- #{escape(gid)}"
|
223
|
-
end
|
224
|
-
|
225
|
-
def check_uid(user, uid)
|
226
|
-
regexp = "^uid=#{uid}("
|
227
|
-
"id #{escape(user)} | grep -- #{escape(regexp)}"
|
228
|
-
end
|
229
|
-
|
230
|
-
def check_login_shell(user, path_to_shell)
|
231
|
-
"getent passwd #{escape(user)} | cut -f 7 -d ':' | grep -w -- #{escape(path_to_shell)}"
|
232
|
-
end
|
233
|
-
|
234
|
-
def check_home_directory(user, path_to_home)
|
235
|
-
"getent passwd #{escape(user)} | cut -f 6 -d ':' | grep -w -- #{escape(path_to_home)}"
|
236
|
-
end
|
237
|
-
|
238
|
-
def check_authorized_key(user, key)
|
239
|
-
key.sub!(/\s+\S*$/, '') if key.match(/^\S+\s+\S+\s+\S*$/)
|
240
|
-
"grep -w -- #{escape(key)} ~#{escape(user)}/.ssh/authorized_keys"
|
241
|
-
end
|
242
|
-
|
243
|
-
def check_iptables_rule(rule, table=nil, chain=nil)
|
244
|
-
raise NotImplementedError.new
|
245
|
-
end
|
246
|
-
|
247
|
-
def check_zfs(zfs, property=nil, value=nil)
|
248
|
-
raise NotImplementedError.new
|
249
|
-
end
|
250
|
-
|
251
|
-
def get_mode(file)
|
252
|
-
"stat -c %a #{escape(file)}"
|
253
|
-
end
|
254
|
-
|
255
|
-
def check_ipfilter_rule(rule)
|
256
|
-
raise NotImplementedError.new
|
257
|
-
end
|
258
|
-
|
259
|
-
def check_ipnat_rule(rule)
|
260
|
-
raise NotImplementedError.new
|
261
|
-
end
|
262
|
-
|
263
|
-
def check_svcprop(svc, property, value)
|
264
|
-
raise NotImplementedError.new
|
265
|
-
end
|
266
|
-
|
267
|
-
def check_svcprops(svc, property)
|
268
|
-
raise NotImplementedError.new
|
269
|
-
end
|
270
|
-
|
271
|
-
def check_selinux(mode)
|
272
|
-
raise NotImplementedError.new
|
273
|
-
end
|
274
|
-
|
275
|
-
def check_access_by_user(file, user, access)
|
276
|
-
raise NotImplementedError.new
|
277
|
-
end
|
278
|
-
|
279
|
-
def check_kernel_module_loaded(name)
|
280
|
-
raise NotImplementedError.new
|
281
|
-
end
|
282
|
-
|
283
|
-
def check_ipv4_address(interface, ip_address)
|
284
|
-
raise NotImplementedError.new
|
285
|
-
end
|
286
|
-
|
287
|
-
def check_mail_alias(recipient, target)
|
288
|
-
target = "[[:space:]]#{target}"
|
289
|
-
"getent aliases #{escape(recipient)} | grep -- #{escape(target)}$"
|
290
|
-
end
|
291
|
-
|
292
|
-
def get_file_content(file)
|
293
|
-
"cat #{file}"
|
294
|
-
end
|
295
|
-
|
296
|
-
def check_container(container)
|
297
|
-
raise NotImplementedError.new
|
298
|
-
end
|
299
|
-
|
300
|
-
def check_cotainer_running(container)
|
301
|
-
raise NotImplementedError.new
|
302
|
-
end
|
303
|
-
end
|
304
|
-
end
|
305
|
-
end
|