kanrisuru 0.7.3 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/lib/kanrisuru/core/disk.rb +7 -7
- data/lib/kanrisuru/core/system.rb +87 -0
- data/lib/kanrisuru/core/zypper.rb +1 -1
- data/lib/kanrisuru/os_package.rb +1 -2
- data/lib/kanrisuru/version.rb +1 -1
- data/spec/functional/core/disk_spec.rb +7 -0
- data/spec/functional/core/system_spec.rb +15 -0
- data/spec/functional/os_package_spec.rb +8 -8
- data/spec/unit/core/system_spec.rb +12 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7986958e7a5a32bb79f6f8cd225b73e996f68329e9adb95c324ad898efaa8bdc
|
4
|
+
data.tar.gz: '02279420cd5ff6017234d4058847173f3be44810267e57c59cb2b09be8f9dadc'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fedbd06614d36213c5d7df56c22e1f88ecb5b41732704a02b41eff1272559db3f8dc22eaa1112188cd5b0204f4c81f40e1d7f66689c41ca2d34ef0c125fbd9e
|
7
|
+
data.tar.gz: a451f3c5c4cb26ff0bf733371175c99f148ccd9531bcf0366b08d063b4ac495b1fdd3aafe47ff40b4a2cbd9df94b2de3c7dff8e0afa1f9717b3e54271a4ef75b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
## Kanrisuru 0.8.3 (August 20, 2021) ##
|
2
|
+
* Fix bug with disk usage, `du` command by escaping the awk variables in the command.
|
3
|
+
* Update `du` command to execute with shell user.
|
4
|
+
|
5
|
+
## Kanrisuru 0.8.2 (August 19, 2021) ##
|
6
|
+
* Convert `major` and `minor` device field values to an `integer` in lsblk system module.
|
7
|
+
|
8
|
+
## Kanrisuru 0.8.1 (August 19, 2021) ##
|
9
|
+
* Fix `nodeps` flag value for `lsblk` command in disk module.
|
10
|
+
|
11
|
+
## Kanrisuru 0.8.0 (August 18, 2021) ##
|
12
|
+
* Add last / lastb implementation in system core module.
|
13
|
+
|
1
14
|
## Kanrisuru 0.7.3 (August 9, 2021) ##
|
2
15
|
* Fixed bug with zypper remove package, where the package names weren't being added to the linux command.
|
3
16
|
* Test case added to ensure package is removed.
|
data/lib/kanrisuru/core/disk.rb
CHANGED
@@ -31,9 +31,9 @@ module Kanrisuru
|
|
31
31
|
|
32
32
|
command = Kanrisuru::Command.new('du')
|
33
33
|
command.append_arg('-s', path)
|
34
|
-
command | "awk '{print
|
34
|
+
command | "awk '{print \\$1, \\$2}'"
|
35
35
|
|
36
|
-
|
36
|
+
execute_shell(command)
|
37
37
|
|
38
38
|
Kanrisuru::Result.new(command) do |cmd|
|
39
39
|
string = cmd.to_s
|
@@ -144,7 +144,7 @@ module Kanrisuru
|
|
144
144
|
|
145
145
|
command.append_flag('-a', all)
|
146
146
|
command.append_flag('-p', paths)
|
147
|
-
command.append_flag('-
|
147
|
+
command.append_flag('-d', nodeps)
|
148
148
|
|
149
149
|
command.append_arg('-o', 'NAME,FSTYPE,MAJ:MIN,MOUNTPOINT,SIZE,UUID,RO,RM,OWNER,GROUP,MODE,TYPE')
|
150
150
|
execute(command)
|
@@ -244,8 +244,8 @@ module Kanrisuru
|
|
244
244
|
current_device.fs_type = value
|
245
245
|
when 'MAJ:MIN'
|
246
246
|
maj, min = value.split(':')
|
247
|
-
current_device.maj_dev = maj
|
248
|
-
current_device.min_dev = min
|
247
|
+
current_device.maj_dev = maj ? maj.to_i : nil
|
248
|
+
current_device.min_dev = min ? min.to_i : nil
|
249
249
|
when 'MOUNTPOINT'
|
250
250
|
current_device.mount_point = value
|
251
251
|
when 'SIZE'
|
@@ -281,8 +281,8 @@ module Kanrisuru
|
|
281
281
|
|
282
282
|
LsblkDevice.new(
|
283
283
|
device['name'],
|
284
|
-
maj_min ? maj_min.split(':')[0] : nil,
|
285
|
-
maj_min ? maj_min.split(':')[1] : nil,
|
284
|
+
maj_min ? maj_min.split(':')[0].to_i : nil,
|
285
|
+
maj_min ? maj_min.split(':')[1].to_i : nil,
|
286
286
|
device['rm'],
|
287
287
|
device['ro'],
|
288
288
|
device['owner'],
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'date'
|
4
|
+
require 'ipaddr'
|
4
5
|
|
5
6
|
module Kanrisuru
|
6
7
|
module Core
|
@@ -19,6 +20,7 @@ module Kanrisuru
|
|
19
20
|
os_define :linux, :kstat
|
20
21
|
|
21
22
|
os_define :linux, :lsof
|
23
|
+
os_define :linux, :last
|
22
24
|
|
23
25
|
os_define :linux, :uptime
|
24
26
|
|
@@ -116,6 +118,19 @@ module Kanrisuru
|
|
116
118
|
:name
|
117
119
|
)
|
118
120
|
|
121
|
+
SessionDetail = Struct.new(
|
122
|
+
:tty,
|
123
|
+
:login_at,
|
124
|
+
:logout_at,
|
125
|
+
:ip_address,
|
126
|
+
:success
|
127
|
+
)
|
128
|
+
|
129
|
+
LoginUser = Struct.new(
|
130
|
+
:user,
|
131
|
+
:sessions
|
132
|
+
)
|
133
|
+
|
119
134
|
def load_env
|
120
135
|
command = Kanrisuru::Command.new('env')
|
121
136
|
execute_shell(command)
|
@@ -271,6 +286,65 @@ module Kanrisuru
|
|
271
286
|
Kanrisuru::Result.new(command, &:to_i)
|
272
287
|
end
|
273
288
|
|
289
|
+
def last(opts = {})
|
290
|
+
command =
|
291
|
+
if opts[:failed_attempts]
|
292
|
+
Kanrisuru::Command.new('lastb')
|
293
|
+
else
|
294
|
+
Kanrisuru::Command.new('last')
|
295
|
+
end
|
296
|
+
|
297
|
+
command.append_flag('-i')
|
298
|
+
command.append_flag('-F')
|
299
|
+
command.append_arg('-f', opts[:file])
|
300
|
+
|
301
|
+
## Some systems only use 1 space between user and TTY field
|
302
|
+
## Add an additional space in output formatting for simple parsing
|
303
|
+
## logic.
|
304
|
+
command | "sed 's/ / /'"
|
305
|
+
|
306
|
+
execute_shell(command)
|
307
|
+
|
308
|
+
Kanrisuru::Result.new(command) do |cmd|
|
309
|
+
lines = cmd.to_a
|
310
|
+
|
311
|
+
mapping = {}
|
312
|
+
|
313
|
+
lines.each do |line|
|
314
|
+
next if Kanrisuru::Util.blank?(line)
|
315
|
+
next if line.include?('wtmp') || line.include?('btmp')
|
316
|
+
|
317
|
+
line = line.gsub(' still logged in', '- still logged in') if line.include?('still logged in')
|
318
|
+
|
319
|
+
values = line.split(/\s{2,}/, 4)
|
320
|
+
user = values[0]
|
321
|
+
tty = values[1]
|
322
|
+
ip = IPAddr.new(values[2])
|
323
|
+
|
324
|
+
date_range = values[3]
|
325
|
+
login, logout = date_range.split(' - ')
|
326
|
+
|
327
|
+
login = parse_last_date(login) if login
|
328
|
+
|
329
|
+
logout = parse_last_date(logout) if logout
|
330
|
+
|
331
|
+
detail = SessionDetail.new
|
332
|
+
detail.tty = tty
|
333
|
+
detail.ip_address = ip
|
334
|
+
detail.login_at = login
|
335
|
+
detail.logout_at = logout
|
336
|
+
|
337
|
+
detail.success = !Kanrisuru::Util.present?(opts[:failed_attemps])
|
338
|
+
|
339
|
+
mapping[user] = LoginUser.new(user, []) unless mapping.key?(user)
|
340
|
+
|
341
|
+
mapping[user].sessions << detail
|
342
|
+
end
|
343
|
+
|
344
|
+
mapping.values
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
274
348
|
def ps(opts = {})
|
275
349
|
group = opts[:group]
|
276
350
|
user = opts[:user]
|
@@ -567,6 +641,19 @@ module Kanrisuru
|
|
567
641
|
line.split(char, 2)[1]
|
568
642
|
end
|
569
643
|
|
644
|
+
def parse_last_date(string)
|
645
|
+
tokens = string.split
|
646
|
+
|
647
|
+
return if tokens.length < 4
|
648
|
+
|
649
|
+
month_abbr = tokens[1]
|
650
|
+
day = tokens[2]
|
651
|
+
timestamp = tokens[3]
|
652
|
+
year = tokens[4]
|
653
|
+
|
654
|
+
DateTime.parse("#{day} #{month_abbr} #{year} #{timestamp}")
|
655
|
+
end
|
656
|
+
|
570
657
|
def parse_policy_abbr(value)
|
571
658
|
case value
|
572
659
|
when '-'
|
data/lib/kanrisuru/os_package.rb
CHANGED
@@ -159,7 +159,6 @@ module Kanrisuru
|
|
159
159
|
os_method_names.each do |method_name|
|
160
160
|
if namespace
|
161
161
|
namespace_class.class_eval do
|
162
|
-
|
163
162
|
define_method method_name do |*args, &block|
|
164
163
|
unbound_method = nil
|
165
164
|
|
@@ -193,7 +192,7 @@ module Kanrisuru
|
|
193
192
|
else
|
194
193
|
define_method method_name do |*args, &block|
|
195
194
|
unbound_method = nil
|
196
|
-
|
195
|
+
|
197
196
|
host = self
|
198
197
|
os_method_cache = host.instance_variable_get(:@os_method_cache) || {}
|
199
198
|
|
data/lib/kanrisuru/version.rb
CHANGED
@@ -65,6 +65,13 @@ RSpec.describe Kanrisuru::Core::Disk do
|
|
65
65
|
expect(result[0].path).to eq("#{host_json['home']}/.bashrc")
|
66
66
|
end
|
67
67
|
|
68
|
+
it 'gets disk usage root' do
|
69
|
+
host.su('root')
|
70
|
+
result = host.du(path: '/etc')
|
71
|
+
expect(result).to be_success
|
72
|
+
expect(result[0].path).to eq("/etc")
|
73
|
+
end
|
74
|
+
|
68
75
|
it 'gets disk free for system' do
|
69
76
|
expect(host.df.data).to be_instance_of(Array)
|
70
77
|
expect(host.df(inodes: true).data).to be_instance_of(Array)
|
@@ -96,6 +96,21 @@ RSpec.describe Kanrisuru::Core::System do
|
|
96
96
|
expect(result.cpus.length).to eq(host.cpu.cores)
|
97
97
|
end
|
98
98
|
|
99
|
+
it 'gets login details' do
|
100
|
+
host.su('root')
|
101
|
+
|
102
|
+
result = host.last
|
103
|
+
expect(result).to be_success
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'gets failed login attempts' do
|
107
|
+
host.su('root')
|
108
|
+
|
109
|
+
result = host.last(failed_attempts: true)
|
110
|
+
puts result.data
|
111
|
+
expect(result).to be_success
|
112
|
+
end
|
113
|
+
|
99
114
|
it 'gets process details' do
|
100
115
|
result = host.ps
|
101
116
|
|
@@ -162,10 +162,10 @@ RSpec.describe Kanrisuru::OsPackage do
|
|
162
162
|
|
163
163
|
expect(cluster).to respond_to(:output)
|
164
164
|
expect(cluster.output).to eq([
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
165
|
+
{ host: 'ubuntu-host', result: 'debian' },
|
166
|
+
{ host: 'centos-host', result: 'fedora' },
|
167
|
+
{ host: 'opensuse-host', result: 'sles' }
|
168
|
+
])
|
169
169
|
|
170
170
|
expect(host1).to respond_to(:alias)
|
171
171
|
expect(host2).to respond_to(:alias)
|
@@ -180,10 +180,10 @@ RSpec.describe Kanrisuru::OsPackage do
|
|
180
180
|
expect(cluster).to respond_to(:alias)
|
181
181
|
expect(cluster.alias).to respond_to(:output)
|
182
182
|
expect(cluster.alias.output).to eq([
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
183
|
+
{ host: 'ubuntu-host', result: 'debian' },
|
184
|
+
{ host: 'centos-host', result: 'fedora' },
|
185
|
+
{ host: 'opensuse-host', result: 'sles' }
|
186
|
+
])
|
187
187
|
|
188
188
|
host1.disconnect
|
189
189
|
host2.disconnect
|
@@ -86,5 +86,17 @@ RSpec.describe Kanrisuru::Core::System do
|
|
86
86
|
:inode,
|
87
87
|
:name
|
88
88
|
)
|
89
|
+
expect(Kanrisuru::Core::System::SessionDetail.new).to respond_to(
|
90
|
+
:tty,
|
91
|
+
:login_at,
|
92
|
+
:logout_at,
|
93
|
+
:ip_address,
|
94
|
+
:success
|
95
|
+
)
|
96
|
+
|
97
|
+
expect(Kanrisuru::Core::System::LoginUser.new).to respond_to(
|
98
|
+
:user,
|
99
|
+
:sessions
|
100
|
+
)
|
89
101
|
end
|
90
102
|
end
|
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.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Mammina
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|