kanrisuru 0.5.2 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 577077bbfed12648f504d29d8cfc71c3b370c629517a0e245bd9a666d59647de
4
- data.tar.gz: c7172f53feae30e08ed8394077d091733624f0937925cf9e8c2778ef293341bf
3
+ metadata.gz: 3a02ab5fbc9ef38c054d2c336b630e9a48c209a393044056a2262dec3a00d373
4
+ data.tar.gz: 80d925b3b5b3c884a9bea23b81423607130f021da7fc55ad2bc5f8bfbb8ab245
5
5
  SHA512:
6
- metadata.gz: 1bb1ae43f1dbb544356c781c76d78abe38a006efae79379f802059d1571c75fb9e67c5ff7ae34aa5ae243591eb96c4f733167aa434683f4a5fcb6b92975ff7fb
7
- data.tar.gz: a7b3cd0fe6804bd1ded0872b2d5cb42bb406cb5bd4572f5e40e689fe352ba2ce81162e5ceddb3cdadc9974217a37c7c4ac877ccb05012dab418fdb5d9117bee1
6
+ metadata.gz: be886466d7bd57cf325d84dc5d254a7c7c638f3cbafe328b875426c95ceb81c6d2b38564a390d8a7f9f42831a514f9bdc5ec0c0d0201166776aed389bcab590f
7
+ data.tar.gz: f72ecffd89742fd13df20362044f1618ef45618ba3eaf58c4d688a7b0fe31682b052effd28f60d5bc6e2dbd90dbe33394827d304e456b3ccba2608a9c8d5d17e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## Kanrisuru 0.6.0 (August 1, 2021) ##
2
+ * Add lsof implementation in system core module
3
+ * Fix changelog formatting
4
+ * Add changelog url to gemspec
5
+
1
6
  ## Kanrisuru 0.5.2 (July 30, 2021) ##
2
7
  * Add changelog documentation
3
8
  * Update documentation table with new tested core module
@@ -78,7 +83,7 @@
78
83
  ## Kanrisuru 0.2.1 (June 16, 2021) ##
79
84
  * Add first working release on rubygems.org
80
85
 
81
- ## Kanrisuru 0.2.0 (June 16, 2021) [YANKED]##
86
+ ## Kanrisuru 0.2.0 (June 16, 2021) [YANKED] ##
82
87
 
83
88
  ## Kanrisuru 0.1.0 (December 12, 2020) ##
84
89
  * Initialize repository, start working on project.
data/README.md CHANGED
@@ -81,6 +81,8 @@ cluster.execute('uname') #=> {host: 'host1', result: 'Linux'}, {host: 'host2', r
81
81
  | Get CPU Info | cpu_info | lscpu | core | https://linux.die.net/man/1/lscpu | [x] | [x] | [x] | [x] | [x] | [x] | [x] |
82
82
  | Get CPU architecture | lscpu | lscpu | core | https://linux.die.net/man/1/lscpu | [x] | [x] | [x] | [x] | [x] | [x] | [x] |
83
83
  | Get kernel stastics | kernel_statistics | cat /proc/stat | core | | [x] | [x] | [x] | [x] | [x] | [x] | [x] |
84
+ | Get hardware BIOS info | dmi | dmidecode | core | https://linux.die.net/man/8/dmidecode | [x] | [x] | [x] | [x] | [x] | [x] | [x] |
85
+ | Get open file details for processes | lsof | lsof | core | https://linux.die.net/man/8/lsof | [x] | [x] | [x] | [x] | [x] | [x] | [x] |
84
86
  | Get Load Average | load_average | cat /proc/load_avg | core | | [x] | [x] | [x] | [x] | [x] | [x] | [x] |
85
87
  | Get RAM Available | free | cat /proc/meminfo | core | | [x] | [x] | [x] | [x] | [x] | [x] | [x] |
86
88
  | Get list of processes | ps | ps | core | https://linux.die.net/man/1/ps | [x] | [x] | [x] | [x] | [x] | [x] | [x] |
data/kanrisuru.gemspec CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |gem|
27
27
  gem.require_paths = ['lib']
28
28
 
29
29
  gem.metadata = {
30
- 'source_code_uri' => 'https://github.com/avamia/kanrisuru/'
30
+ 'source_code_uri' => 'https://github.com/avamia/kanrisuru/',
31
+ 'changelog_uri' => 'https://github.com/avamia/kanrisuru/blob/main/CHANGELOG.md'
31
32
  }
32
33
  end
@@ -16,6 +16,9 @@ module Kanrisuru
16
16
  os_define :linux, :kill
17
17
 
18
18
  os_define :linux, :kernel_statistics
19
+ os_define :linux, :kstat
20
+
21
+ os_define :linux, :lsof
19
22
 
20
23
  os_define :linux, :uptime
21
24
 
@@ -101,6 +104,18 @@ module Kanrisuru
101
104
 
102
105
  UserLoggedIn = Struct.new(:user, :tty, :ip, :login, :idle, :jcpu, :pcpu, :command)
103
106
 
107
+ OpenFile = Struct.new(
108
+ :command,
109
+ :pid,
110
+ :uid,
111
+ :file_descriptor,
112
+ :type,
113
+ :device,
114
+ :size,
115
+ :inode,
116
+ :name
117
+ )
118
+
104
119
  def load_env
105
120
  command = Kanrisuru::Command.new('env')
106
121
  execute_shell(command)
@@ -305,6 +320,64 @@ module Kanrisuru
305
320
  Kanrisuru::Result.new(command)
306
321
  end
307
322
 
323
+ def lsof(opts = {})
324
+ command = Kanrisuru::Command.new('lsof -F pcuftDsin')
325
+
326
+ execute_shell(command)
327
+ Kanrisuru::Result.new(command) do |cmd|
328
+ lines = cmd.to_a
329
+
330
+ current_row = nil
331
+ current_pid = nil
332
+ current_user = nil
333
+ current_command = nil
334
+
335
+ rows = []
336
+
337
+ lines.each do |line|
338
+ case line
339
+ when /^p/
340
+ current_pid = parse_lsof(line, 'p').to_i
341
+ when /^c/
342
+ current_command = parse_lsof(line, 'c')
343
+ when /^u/
344
+ current_user = parse_lsof(line, 'u').to_i
345
+ when /^f/
346
+ if current_row
347
+ rows << current_row
348
+ end
349
+
350
+ current_row = OpenFile.new
351
+ current_row.pid = current_pid
352
+ current_row.command = current_command
353
+ current_row.uid = current_user
354
+
355
+ current_row.file_descriptor = parse_lsof(line, 'f')
356
+ when /^t/
357
+ current_row.type = parse_lsof(line, 't')
358
+ when /^D/
359
+ current_row.device = parse_lsof(line, 'D')
360
+ when /^s/
361
+ current_row.size = parse_lsof(line, 's').to_i
362
+ when /^i/
363
+ current_row.inode = parse_lsof(line, 'i').to_i
364
+ when /^n/
365
+ current_row.name = parse_lsof(line, 'n')
366
+ end
367
+ end
368
+
369
+ if current_row
370
+ rows << current_row
371
+ end
372
+
373
+ rows
374
+ end
375
+ end
376
+
377
+ def kstat
378
+ kernel_statistics
379
+ end
380
+
308
381
  def kernel_statistics
309
382
  command = Kanrisuru::Command.new('cat /proc/stat')
310
383
 
@@ -494,6 +567,10 @@ module Kanrisuru
494
567
 
495
568
  private
496
569
 
570
+ def parse_lsof(line, char)
571
+ line.split(char, 2)[1]
572
+ end
573
+
497
574
  def parse_policy_abbr(value)
498
575
  case value
499
576
  when '-'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kanrisuru
4
- VERSION = '0.5.2'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -26,14 +26,20 @@ RSpec.describe Kanrisuru::Core::System do
26
26
 
27
27
  it 'gets environment variables' do
28
28
  result = host.load_env
29
-
30
- expect(result.success?).to be(true)
29
+ expect(result).to be_success
31
30
  expect(result.data).to be_instance_of(Hash)
32
31
  end
33
32
 
33
+ it 'gets open files' do
34
+ host.su('root')
35
+ result = host.lsof
36
+ expect(result).to be_success
37
+ expect(result.data).to be_instance_of(Array)
38
+ end
39
+
34
40
  it 'gets uptime' do
35
41
  result = host.uptime
36
- expect(result.success?).to eq(true)
42
+ expect(result).to be_success
37
43
 
38
44
  expect(result).to respond_to(
39
45
  :boot_time, :uptime, :seconds,
@@ -75,5 +75,16 @@ RSpec.describe Kanrisuru::Core::System do
75
75
  expect(Kanrisuru::Core::System::UserLoggedIn.new).to respond_to(
76
76
  :user, :tty, :ip, :login, :idle, :jcpu, :pcpu, :command
77
77
  )
78
+ expect(Kanrisuru::Core::System::OpenFile.new).to respond_to(
79
+ :command,
80
+ :pid,
81
+ :uid,
82
+ :file_descriptor,
83
+ :type,
84
+ :device,
85
+ :size,
86
+ :inode,
87
+ :name
88
+ )
78
89
  end
79
90
  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.5.2
4
+ version: 0.6.0
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-07-30 00:00:00.000000000 Z
11
+ date: 2021-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -226,6 +226,7 @@ licenses:
226
226
  - MIT
227
227
  metadata:
228
228
  source_code_uri: https://github.com/avamia/kanrisuru/
229
+ changelog_uri: https://github.com/avamia/kanrisuru/blob/main/CHANGELOG.md
229
230
  post_install_message:
230
231
  rdoc_options: []
231
232
  require_paths: