kanrisuru 0.16.13 → 0.16.17
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/README.md +1 -1
- data/lib/kanrisuru/core/dmi/parsers/dmi.rb +1 -2
- data/lib/kanrisuru/core/mount/commands/umount.rb +3 -0
- data/lib/kanrisuru/core/transfer/commands/download.rb +24 -4
- data/lib/kanrisuru/core/transfer/commands/upload.rb +2 -3
- data/lib/kanrisuru/core/transfer/commands/wget.rb +20 -6
- data/lib/kanrisuru/core/user/commands/get_user.rb +14 -9
- data/lib/kanrisuru/core/user/parser.rb +1 -0
- data/lib/kanrisuru/core/user/parsers/user.rb +21 -0
- data/lib/kanrisuru/version.rb +1 -1
- data/spec/functional/core/find_spec.rb +1 -1
- data/spec/functional/core/group_spec.rb +3 -5
- data/spec/functional/core/mount_spec.rb +2 -0
- data/spec/functional/core/transfer_spec.rb +27 -11
- data/spec/functional/remote/cluster_spec.rb +9 -9
- data/spec/support/shared_examples/integration/core/transfer.rb +18 -1
- data/spec/support/shared_examples/integration/core/user.rb +15 -1
- data/spec/support/shared_examples/integration/remote/cluster.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e31b687d1a4fbd77c62a502ffe4e3ec6e7c314c9e8335fc1964e8fcaca75f554
|
|
4
|
+
data.tar.gz: e36de3bb37966123d08c25aa6023be77f932705e49d005590f63a45d6a8c2d1b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fb5549794cf62990bd0026c315b5c9828884b814f28ea82a7e04f944d12d2d52a77131d72b64e1d2c3d9d9c525f3bd468d020d69f0539304818f78b8b070b5ef
|
|
7
|
+
data.tar.gz: dd58f2d707f62615d4a7cc997dea5f27ca0a1678e6d60478f5548c4953685b469f61f8928c879b4965a56c51de4ec8ddb722980bd14cb9f1793355b001f60678
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
## Kanrisuru 0.16.17 (January 10, 2022) ##
|
|
2
|
+
* Add additional options to `wget` command.
|
|
3
|
+
* Rename some options to better reflect options from wget program.
|
|
4
|
+
|
|
5
|
+
## Kanrisuru 0.16.16 (January 08, 2022) ##
|
|
6
|
+
* Fix issue with `download` command when downloading directories from remote server.
|
|
7
|
+
|
|
8
|
+
## Kanrisuru 0.16.15 (January 07, 2022) ##
|
|
9
|
+
* Add recursive and all_targets opts to `umount` command.
|
|
10
|
+
|
|
11
|
+
## Kanrisuru 0.16.14 (January 02, 2022) ##
|
|
12
|
+
* Fix `get_user` command by parsing output to get user name if uid is passed in.
|
|
13
|
+
|
|
1
14
|
## Kanrisuru 0.16.13 (January 01, 2022) ##
|
|
2
15
|
* Add `non_unique` and `system` opts to `create_group` command
|
|
3
16
|
|
data/README.md
CHANGED
|
@@ -16,6 +16,9 @@ module Kanrisuru
|
|
|
16
16
|
|
|
17
17
|
command.append_flag('-l', opts[:lazy])
|
|
18
18
|
command.append_flag('-f', opts[:force])
|
|
19
|
+
|
|
20
|
+
command.append_flag('--all-targets', opts[:all_targets])
|
|
21
|
+
command.append_flag('--recursive', opts[:recursive])
|
|
19
22
|
|
|
20
23
|
if Kanrisuru::Util.present?(all)
|
|
21
24
|
command.append_flag('-a')
|
|
@@ -4,21 +4,41 @@ module Kanrisuru
|
|
|
4
4
|
module Core
|
|
5
5
|
module Transfer
|
|
6
6
|
def download(remote_path, local_path = nil, opts = {})
|
|
7
|
+
recursive = opts[:recursive] || false
|
|
8
|
+
|
|
9
|
+
remote_path += '/' if !remote_path.end_with?('/') && recursive
|
|
10
|
+
local_path += '/' if !local_path.nil? && !local_path.end_with?('/') && recursive
|
|
11
|
+
|
|
7
12
|
if local_path.instance_of?(Hash)
|
|
8
13
|
opts = local_path
|
|
9
14
|
local_path = nil
|
|
10
15
|
end
|
|
11
16
|
|
|
12
|
-
|
|
17
|
+
tmp_name = "kanrisuru-tmp-#{Time.now.to_i}-#{object_id}"
|
|
18
|
+
tmp_path = "/tmp/#{tmp_name}"
|
|
13
19
|
|
|
14
20
|
begin
|
|
15
|
-
result = cp(remote_path, tmp_path, force: true)
|
|
21
|
+
result = cp(remote_path, tmp_path, force: true, follow: true, recursive: recursive)
|
|
16
22
|
raise 'Unable to copy remote file to temp path' unless result.success?
|
|
17
23
|
|
|
24
|
+
result = chown(tmp_path, owner: @username, group: @username, recursive: recursive)
|
|
25
|
+
raise 'Unable to update owner or group for temp path' unless result.success?
|
|
26
|
+
|
|
27
|
+
result = chmod(tmp_path, 'u+r', recursive: true)
|
|
28
|
+
raise 'Unable to update owner permission read access' unless result.success?
|
|
29
|
+
|
|
30
|
+
local_path = ::File.expand_path(local_path) if local_path
|
|
18
31
|
result = ssh.scp.download!(tmp_path, local_path, opts)
|
|
19
|
-
|
|
32
|
+
return false unless result
|
|
33
|
+
|
|
34
|
+
if Kanrisuru::Util.present?(local_path) && recursive
|
|
35
|
+
remote_dirname = remote_path.split('/').last
|
|
36
|
+
FileUtils.mv("#{local_path}/#{tmp_name}", "#{local_path}/#{remote_dirname}")
|
|
37
|
+
else
|
|
38
|
+
result
|
|
39
|
+
end
|
|
20
40
|
ensure
|
|
21
|
-
rm(tmp_path, force: true) if inode?(tmp_path)
|
|
41
|
+
rm(tmp_path, force: true, recursive: recursive) if inode?(tmp_path)
|
|
22
42
|
end
|
|
23
43
|
end
|
|
24
44
|
end
|
|
@@ -12,9 +12,7 @@ module Kanrisuru
|
|
|
12
12
|
|
|
13
13
|
## Need to copy internal dir contents, not the tmp dir itself
|
|
14
14
|
if opts[:recursive]
|
|
15
|
-
unless dir?(remote_path)
|
|
16
|
-
mkdir(remote_path, silent: true)
|
|
17
|
-
end
|
|
15
|
+
mkdir(remote_path, silent: true) unless dir?(remote_path)
|
|
18
16
|
|
|
19
17
|
result = cp("#{tmp_path}/*", remote_path, recursive: true)
|
|
20
18
|
else
|
|
@@ -22,6 +20,7 @@ module Kanrisuru
|
|
|
22
20
|
end
|
|
23
21
|
|
|
24
22
|
raise "Unable to move file to remote path - #{result.command.raw_result}" unless result.success?
|
|
23
|
+
|
|
25
24
|
stat(remote_path)
|
|
26
25
|
ensure
|
|
27
26
|
rm(tmp_path, force: true) if inode?(tmp_path)
|
|
@@ -105,7 +105,12 @@ module Kanrisuru
|
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
command.append_arg('--post-file', opts[:post_file])
|
|
108
|
+
command.append_arg('--method', opts[:method])
|
|
109
|
+
|
|
108
110
|
command.append_flag('--content-disposition', opts[:content_disposition])
|
|
111
|
+
command.append_flag('--content-on-error', opts[:content_on_error])
|
|
112
|
+
command.append_flag('--trust-server-names', opts[:trust_server_names])
|
|
113
|
+
command.append_flag('--retry-on-host-error', opts[:retry_on_host_error])
|
|
109
114
|
|
|
110
115
|
## SSL / TLS
|
|
111
116
|
if Kanrisuru::Util.present?(opts[:secure_protocol])
|
|
@@ -123,18 +128,24 @@ module Kanrisuru
|
|
|
123
128
|
command.append_arg('--ca-directory', opts[:ca_directory])
|
|
124
129
|
command.append_arg('--random-file', opts[:random_file])
|
|
125
130
|
command.append_arg('--egd-file', opts[:egd_file])
|
|
131
|
+
command.append_flag('--https-only', opts[:https_only])
|
|
126
132
|
|
|
127
|
-
## FTP
|
|
133
|
+
## FTP / FTPS
|
|
128
134
|
command.append_arg('--ftp-user', opts[:ftp_user])
|
|
129
135
|
command.append_arg('--ftp-password', opts[:ftp_password])
|
|
130
136
|
command.append_flag('--no-remove-listing', opts[:no_remove_listing])
|
|
131
137
|
command.append_flag('--no-glob', opts[:no_glob])
|
|
132
138
|
command.append_flag('--no-passive-ftp', opts[:no_passive_ftp])
|
|
133
139
|
command.append_flag('--retr-symlinks', opts[:retr_symlinks])
|
|
140
|
+
command.append_flag('--preserve-permissions', opts[:preserve_permissions])
|
|
141
|
+
command.append_flag('--ftps-implicit', opts[:ftps_implicit])
|
|
142
|
+
command.append_flag('--no-ftps-resume-ssl', opts[:no_ftps_resume_ssl])
|
|
143
|
+
command.append_flag('--ftps-clear-data-connection', opts[:ftps_clear_data_connection])
|
|
144
|
+
command.append_flag('--ftps-fallback-to-ftp', opts[:ftps_fallback_to_ftp])
|
|
134
145
|
|
|
135
146
|
## Recursive Retrieval
|
|
136
147
|
command.append_flag('--recursive', opts[:recursive])
|
|
137
|
-
command.append_arg('--level', opts[:
|
|
148
|
+
command.append_arg('--level', opts[:level])
|
|
138
149
|
command.append_flag('--delete-after', opts[:delete_after])
|
|
139
150
|
command.append_flag('--convert-links', opts[:convert_links])
|
|
140
151
|
command.append_flag('--backup-converted', opts[:backup_converted])
|
|
@@ -143,10 +154,13 @@ module Kanrisuru
|
|
|
143
154
|
command.append_flag('--strict-comments', opts[:strict_comments])
|
|
144
155
|
|
|
145
156
|
## Recursive Accept/Reject
|
|
146
|
-
command.append_arg('--accept', Kanrisuru::Util.array_join_string(opts[:
|
|
147
|
-
command.append_arg('--reject', Kanrisuru::Util.array_join_string(opts[:
|
|
148
|
-
command.append_arg('--
|
|
149
|
-
command.append_arg('--
|
|
157
|
+
command.append_arg('--accept', Kanrisuru::Util.array_join_string(opts[:accept]))
|
|
158
|
+
command.append_arg('--reject', Kanrisuru::Util.array_join_string(opts[:reject]))
|
|
159
|
+
command.append_arg('--accept-regex', opts[:accept_regex])
|
|
160
|
+
command.append_arg('--reject-regex', opts[:reject_regex])
|
|
161
|
+
command.append_arg('--regex_type', opts[:regex_type])
|
|
162
|
+
command.append_arg('--domains', Kanrisuru::Util.array_join_string(opts[:domains]))
|
|
163
|
+
command.append_arg('--exclude-domains', Kanrisuru::Util.array_join_string(opts[:exclude_domains]))
|
|
150
164
|
command.append_arg('--follow-tags', Kanrisuru::Util.array_join_string(opts[:follow_tags]))
|
|
151
165
|
command.append_arg('--ignore-tags', Kanrisuru::Util.array_join_string(opts[:ignore_tags]))
|
|
152
166
|
command.append_arg('--include-directories', Kanrisuru::Util.array_join_string(opts[:include_directories]))
|
|
@@ -8,11 +8,16 @@ module Kanrisuru
|
|
|
8
8
|
execute_shell(command)
|
|
9
9
|
|
|
10
10
|
Kanrisuru::Result.new(command) do |cmd|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
if Kanrisuru::Util.numeric?(user)
|
|
12
|
+
uid = user.to_i
|
|
13
|
+
user = Parser::User.parse(cmd)
|
|
14
|
+
else
|
|
15
|
+
## Get user id
|
|
16
|
+
result = get_uid(user)
|
|
17
|
+
break if result.failure?
|
|
18
|
+
|
|
19
|
+
uid = result.to_i
|
|
20
|
+
end
|
|
16
21
|
|
|
17
22
|
## Get all groups for the user, with gid and group name
|
|
18
23
|
array = Parser::Groups.parse(cmd)
|
|
@@ -24,12 +29,12 @@ module Kanrisuru
|
|
|
24
29
|
end
|
|
25
30
|
|
|
26
31
|
## Get home / shell path information
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
command2 = Kanrisuru::Command.new("getent passwd #{user}")
|
|
33
|
+
command2 | "awk -F: '{print $6, $7}'"
|
|
29
34
|
|
|
30
|
-
execute(
|
|
35
|
+
execute(command2)
|
|
31
36
|
|
|
32
|
-
result = Kanrisuru::Result.new(
|
|
37
|
+
result = Kanrisuru::Result.new(command2) do |cmd2|
|
|
33
38
|
Parser::Getent.parse(cmd2)
|
|
34
39
|
end
|
|
35
40
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Kanrisuru
|
|
4
|
+
module Core
|
|
5
|
+
module User
|
|
6
|
+
module Parser
|
|
7
|
+
class User
|
|
8
|
+
def self.parse(command)
|
|
9
|
+
string = command.to_s
|
|
10
|
+
string = string.split[0]
|
|
11
|
+
|
|
12
|
+
matches = string.match(/uid=\d+\((.+)\)/)
|
|
13
|
+
return if !matches || !matches.captures
|
|
14
|
+
|
|
15
|
+
matches.captures.first
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/kanrisuru/version.rb
CHANGED
|
@@ -22,11 +22,9 @@ RSpec.describe Kanrisuru::Core::Group do
|
|
|
22
22
|
it 'prepares create_group command' do
|
|
23
23
|
expect_command(host.create_group('admin'), 'groupadd admin')
|
|
24
24
|
expect_command(host.create_group('admin',
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
'groupadd admin -g 9000 -o'
|
|
29
|
-
)
|
|
25
|
+
gid: 9000,
|
|
26
|
+
non_unique: true),
|
|
27
|
+
'groupadd admin -g 9000 -o')
|
|
30
28
|
|
|
31
29
|
expect_command(host.create_group('admin', gid: 12, system: true), 'groupadd admin -g 12 -r')
|
|
32
30
|
end
|
|
@@ -95,6 +95,8 @@ RSpec.describe Kanrisuru::Core::Mount do
|
|
|
95
95
|
|
|
96
96
|
it 'prepares umount command' do
|
|
97
97
|
expect_command(host.umount, 'umount')
|
|
98
|
+
expect_command(host.umount(recursive: true, all_targets: true), 'umount --all-targets --recursive')
|
|
99
|
+
|
|
98
100
|
expect_command(host.umount(
|
|
99
101
|
fake: true,
|
|
100
102
|
no_canonicalize: true,
|
|
@@ -97,8 +97,11 @@ RSpec.describe Kanrisuru::Core::Stat do
|
|
|
97
97
|
},
|
|
98
98
|
content_disposition: true,
|
|
99
99
|
secure_protocol: 'SSLv3',
|
|
100
|
+
content_on_error: true,
|
|
101
|
+
trust_server_names: true,
|
|
102
|
+
retry_on_host_error: true,
|
|
100
103
|
no_check_certificate: true),
|
|
101
|
-
"wget --post-data url=https%3A%2F%2Fexample.com%3Fparam%3D123 --content-disposition --secure-protocol SSLv3 --no-check-certificate #{url}")
|
|
104
|
+
"wget --post-data url=https%3A%2F%2Fexample.com%3Fparam%3D123 --content-disposition --content-on-error --trust-server-names --retry-on-host-error --secure-protocol SSLv3 --no-check-certificate #{url}")
|
|
102
105
|
|
|
103
106
|
expect do
|
|
104
107
|
host.wget(url, secure_protocol: 'SSL')
|
|
@@ -115,27 +118,37 @@ RSpec.describe Kanrisuru::Core::Stat do
|
|
|
115
118
|
|
|
116
119
|
expect_command(host.wget(url,
|
|
117
120
|
certificate: '~/cert.pem',
|
|
121
|
+
https_only: true,
|
|
118
122
|
certificate_type: 'PEM',
|
|
119
123
|
private_key: '~/key.pem',
|
|
120
124
|
private_key_type: 'PEM',
|
|
121
125
|
ca_certificate: '~/ca.pem',
|
|
122
126
|
random_file: '~/random'),
|
|
123
|
-
"wget --certificate ~/cert.pem --certificate-type PEM --private-key ~/key.pem --private-key-type PEM --ca-certificate ~/ca.pem --random-file ~/random #{url}")
|
|
127
|
+
"wget --certificate ~/cert.pem --certificate-type PEM --private-key ~/key.pem --private-key-type PEM --ca-certificate ~/ca.pem --random-file ~/random --https-only #{url}")
|
|
124
128
|
|
|
125
129
|
## FTP
|
|
126
|
-
expect_command(host.wget(
|
|
130
|
+
expect_command(host.wget("ftp.example.com",
|
|
127
131
|
ftp_user: 'admin',
|
|
128
132
|
ftp_password: '12345678',
|
|
129
133
|
no_remove_listing: true,
|
|
130
134
|
no_glob: true,
|
|
131
135
|
no_passive_ftp: true,
|
|
132
|
-
retr_symlinks: true
|
|
133
|
-
|
|
136
|
+
retr_symlinks: true,
|
|
137
|
+
preserve_permissions: true),
|
|
138
|
+
"wget --ftp-user admin --ftp-password 12345678 --no-remove-listing --no-glob --no-passive-ftp --retr-symlinks --preserve-permissions ftp.example.com")
|
|
139
|
+
|
|
140
|
+
expect_command(host.wget("ftps.example.com",
|
|
141
|
+
ftp_user: 'admin',
|
|
142
|
+
ftp_password: '12345678',
|
|
143
|
+
ftps_implicit: true,
|
|
144
|
+
no_ftps_resume_ssl: true,
|
|
145
|
+
ftps_fallback_to_ftp: true,
|
|
146
|
+
ftps_clear_data_connection: true), "wget --ftp-user admin --ftp-password 12345678 --ftps-implicit --no-ftps-resume-ssl --ftps-clear-data-connection --ftps-fallback-to-ftp ftps.example.com")
|
|
134
147
|
|
|
135
148
|
## Recursive Retrieval
|
|
136
149
|
expect_command(host.wget(url,
|
|
137
150
|
recursive: true,
|
|
138
|
-
|
|
151
|
+
level: 10,
|
|
139
152
|
delete_after: true,
|
|
140
153
|
convert_links: true,
|
|
141
154
|
backup_converted: true,
|
|
@@ -146,10 +159,13 @@ RSpec.describe Kanrisuru::Core::Stat do
|
|
|
146
159
|
|
|
147
160
|
## Recursive Accept/Reject
|
|
148
161
|
expect_command(host.wget(url,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
162
|
+
accept: ['.txt', '.html'],
|
|
163
|
+
reject: ['.csv'],
|
|
164
|
+
accept_regex: 'https://*',
|
|
165
|
+
regect_regex: 'ftp*',
|
|
166
|
+
regex_type: 'posix',
|
|
167
|
+
domains: ['example.com'],
|
|
168
|
+
exclude_domains: ['hackernews.com'],
|
|
153
169
|
follow_tags: %w[a div span],
|
|
154
170
|
ignore_tags: %w[area link],
|
|
155
171
|
include_directories: ['/gems'],
|
|
@@ -159,6 +175,6 @@ RSpec.describe Kanrisuru::Core::Stat do
|
|
|
159
175
|
span_hosts: true,
|
|
160
176
|
relative: true,
|
|
161
177
|
no_parent: true),
|
|
162
|
-
"wget --accept .txt,.html --reject .csv --domains example.com --exclude-domains hackernews.com --follow-tags a,div,span --ignore-tags area,link --include-directories /gems --exclude-directories /releases --follow-ftp --ignore-case --span-hosts --relative --no-parent #{url}")
|
|
178
|
+
"wget --accept .txt,.html --reject .csv --accept-regex https://* --regex_type posix --domains example.com --exclude-domains hackernews.com --follow-tags a,div,span --ignore-tags area,link --include-directories /gems --exclude-directories /releases --follow-ftp --ignore-case --span-hosts --relative --no-parent #{url}")
|
|
163
179
|
end
|
|
164
180
|
end
|
|
@@ -85,9 +85,9 @@ RSpec.describe Kanrisuru::Remote::Cluster do
|
|
|
85
85
|
expect(command.prepared_command).to eq('sudo -u root /bin/bash -c "ls"')
|
|
86
86
|
expect(cloned_command.prepared_command).to eq('sudo -u root /bin/bash -c "ls"')
|
|
87
87
|
|
|
88
|
-
expect
|
|
88
|
+
expect do
|
|
89
89
|
cluster.send(:create_command, 1)
|
|
90
|
-
|
|
90
|
+
end.to raise_error(ArgumentError)
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
it 'runs execute for a command on a cluster' do
|
|
@@ -178,8 +178,8 @@ RSpec.describe Kanrisuru::Remote::Cluster do
|
|
|
178
178
|
|
|
179
179
|
cluster.cd('/etc')
|
|
180
180
|
cluster.each do |host|
|
|
181
|
-
expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
|
|
182
|
-
end
|
|
181
|
+
expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
|
|
182
|
+
end
|
|
183
183
|
|
|
184
184
|
StubNetwork.unstub_command!(:pwd)
|
|
185
185
|
StubNetwork.unstub_command!(:realpath)
|
|
@@ -198,18 +198,18 @@ RSpec.describe Kanrisuru::Remote::Cluster do
|
|
|
198
198
|
|
|
199
199
|
cluster.chdir('/etc')
|
|
200
200
|
cluster.each do |host|
|
|
201
|
-
expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
|
|
202
|
-
end
|
|
201
|
+
expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
|
|
202
|
+
end
|
|
203
203
|
|
|
204
204
|
StubNetwork.unstub_command!(:pwd)
|
|
205
205
|
StubNetwork.unstub_command!(:realpath)
|
|
206
206
|
end
|
|
207
|
-
|
|
207
|
+
|
|
208
208
|
it 'fails to remove a host from a cluster' do
|
|
209
209
|
cluster = described_class.new(host1, host2)
|
|
210
210
|
|
|
211
|
-
expect
|
|
211
|
+
expect do
|
|
212
212
|
cluster.delete(1)
|
|
213
|
-
|
|
213
|
+
end.to raise_error(ArgumentError)
|
|
214
214
|
end
|
|
215
215
|
end
|
|
@@ -34,6 +34,7 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
|
|
|
34
34
|
keys: [host_json['ssh_key']]
|
|
35
35
|
)
|
|
36
36
|
|
|
37
|
+
FileUtils.rm_rf("../test-output-#{os_name}")
|
|
37
38
|
host.rmdir(spec_dir)
|
|
38
39
|
host.disconnect
|
|
39
40
|
end
|
|
@@ -80,7 +81,7 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
|
|
|
80
81
|
src_path = '/etc/hosts'
|
|
81
82
|
|
|
82
83
|
result = host.download(src_path, path)
|
|
83
|
-
expect(result).to
|
|
84
|
+
expect(result).to be_truthy
|
|
84
85
|
FileUtils.rm(path)
|
|
85
86
|
end
|
|
86
87
|
|
|
@@ -93,6 +94,22 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
|
|
|
93
94
|
expect(lines.length).to be >= 1
|
|
94
95
|
end
|
|
95
96
|
|
|
97
|
+
it 'downloads a dir' do
|
|
98
|
+
remote_path = '/var/log'
|
|
99
|
+
local_path = "../test-output-#{os_name}"
|
|
100
|
+
FileUtils.mkdir(local_path)
|
|
101
|
+
|
|
102
|
+
host.su('root')
|
|
103
|
+
result = host.download(remote_path, local_path, recursive: true)
|
|
104
|
+
expect(result).not_to be nil
|
|
105
|
+
|
|
106
|
+
paths = host.ls(path: '/var/log').map(&:path)
|
|
107
|
+
Dir.glob("#{local_path}/log/*").each do |file|
|
|
108
|
+
name = File.basename(file)
|
|
109
|
+
expect(paths).to include(name)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
96
113
|
it 'wgets url' do
|
|
97
114
|
result = host.wget('https://example.com', directory_prefix: spec_dir)
|
|
98
115
|
expect(result).to be_success
|
|
@@ -35,7 +35,7 @@ RSpec.shared_examples 'user' do |os_name, host_json, _spec_dir|
|
|
|
35
35
|
expect(host.get_uid('asdf').to_i).to eq(nil)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
it 'gets a user details' do
|
|
38
|
+
it 'gets a user details by name' do
|
|
39
39
|
result = host.get_user(host_json['username'])
|
|
40
40
|
expect(result.uid).to eq(1000)
|
|
41
41
|
expect(result.name).to eq(host_json['username'])
|
|
@@ -49,6 +49,20 @@ RSpec.shared_examples 'user' do |os_name, host_json, _spec_dir|
|
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
+
it 'gets a user details by uid' do
|
|
53
|
+
result = host.get_user(1000)
|
|
54
|
+
expect(result.uid).to eq(1000)
|
|
55
|
+
expect(result.name).to eq(host_json['username'])
|
|
56
|
+
expect(result.home.path).to eq(host_json['home'])
|
|
57
|
+
|
|
58
|
+
case os_name
|
|
59
|
+
when 'opensuse', 'sles'
|
|
60
|
+
expect(result.groups[0]).to have_attributes(gid: 100, name: 'users')
|
|
61
|
+
else
|
|
62
|
+
expect(result.groups[0]).to have_attributes(gid: 1000, name: host_json['username'])
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
52
66
|
it 'manages a user' do
|
|
53
67
|
## Need priviledge escalation to manage group
|
|
54
68
|
host.su('root')
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kanrisuru
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.16.
|
|
4
|
+
version: 0.16.17
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryan Mammina
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-01-
|
|
11
|
+
date: 2022-01-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: parallel_tests
|
|
@@ -347,6 +347,7 @@ files:
|
|
|
347
347
|
- lib/kanrisuru/core/user/parser.rb
|
|
348
348
|
- lib/kanrisuru/core/user/parsers/getent.rb
|
|
349
349
|
- lib/kanrisuru/core/user/parsers/groups.rb
|
|
350
|
+
- lib/kanrisuru/core/user/parsers/user.rb
|
|
350
351
|
- lib/kanrisuru/core/user/types.rb
|
|
351
352
|
- lib/kanrisuru/core/yum.rb
|
|
352
353
|
- lib/kanrisuru/core/yum/commands.rb
|