miab 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/miab.rb +118 -0
  4. data.tar.gz.sig +0 -0
  5. metadata +91 -0
  6. metadata.gz.sig +0 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cba50c578e52fc7d97b3c7c499df6b150084840edc5306b09d70932644b7ed54
4
+ data.tar.gz: 3c82b0a728f82ce751c175daa88144ba15f512d0e8bdefd3cdd1d0fd77ea18c6
5
+ SHA512:
6
+ metadata.gz: fc1e00313d192742cc5b4dfe3e8a9227bf3eb71e0b41e53211e300f1a08c6c8b74f0cd829da17f8cfb7fd66b88afd18b04b5b12e762785d36b10111650ca09e9
7
+ data.tar.gz: 38efed52fc6aa009e6c1d8286d199691eb76098a1638b915988ee0dfd10e0eda9be871bf16b51a150ee9c0643a37b29facc517e406bf8d1d712eae275e5ebd20
checksums.yaml.gz.sig ADDED
Binary file
data/lib/miab.rb ADDED
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: miab.rb
4
+
5
+ # Desc: Message in a bottle (MIAB) is designed to execute remote commands
6
+ # through SSH for system maintenance purposes.
7
+
8
+ require 'net/ssh'
9
+ require 'c32'
10
+
11
+
12
+ class Miab
13
+ using ColouredText
14
+
15
+ def initialize(scroll, domain: nil, target: nil, pwlist: {}, password: nil,
16
+ user: nil, debug: false)
17
+
18
+ @results = {}
19
+
20
+ @scroll, @debug = scroll, debug
21
+
22
+ @nodes = if target then
23
+
24
+ target = [target] if target.is_a? String
25
+
26
+ target.inject({}) do |r,x|
27
+ host = domain ? x + '.' + domain : x
28
+ passwd = pwlist[x] || password
29
+ userhost = user ? user + '@' + host : host
30
+ r.merge({userhost => passwd})
31
+ end
32
+
33
+ else
34
+ {}
35
+ end
36
+ end
37
+
38
+ def cast()
39
+
40
+ if @nodes.any? then
41
+
42
+ @nodes.each do |raw_host, password|
43
+
44
+ host, user = raw_host.split(/@/,2).reverse
45
+ @host = host
46
+ @results[host] = {}
47
+
48
+ @ssh = Net::SSH.start( host, user, password: password)
49
+ eval @scroll
50
+ @ssh.close
51
+
52
+ end
53
+
54
+ else
55
+ @results[`hostname`.chomp] = {}
56
+ eval @scroll if @scroll
57
+ end
58
+
59
+ @scroll = nil
60
+ @results
61
+ end
62
+
63
+ def date()
64
+
65
+ instructions = 'date'
66
+ r = @ssh ? @ssh.exec!(instructions) : system(instructions)
67
+ @results[@host][:date] = r.chomp
68
+
69
+ end
70
+
71
+ def disk_space()
72
+
73
+ instructions = 'df -h'
74
+ s = @ssh ? @ssh.exec!(instructions) : system(instructions)
75
+
76
+ @results[@host][:disk_usage] = {}
77
+
78
+ a = s.lines.grep(/\/dev\/root/)
79
+
80
+ puts ('a: ' + a.inspect).debug if @debug
81
+
82
+ if a.any? then
83
+ size, used, avail = a[0].split(/ +/).values_at(1,2,3)
84
+
85
+ @results[@host][:disk_usage][:root] = {size: size, used: used,
86
+ avail: avail}
87
+ end
88
+
89
+ a2 = s.lines.grep(/\/dev\/sda1/)
90
+
91
+ puts ('a2: ' + a2.inspect).debug if @debug
92
+
93
+ if a2.any? then
94
+ size, used, avail = a2[0].split(/ +/).values_at(1,2,3)
95
+
96
+ @results[@host][:disk_usage][:sda1] = {size: size, used: used,
97
+ avail: avail}
98
+ end
99
+
100
+ end
101
+
102
+ alias df disk_space
103
+
104
+
105
+ def pwd()
106
+ instructions = 'pwd'
107
+ r = @ssh ? @ssh.exec!(instructions) : system(instructions)
108
+ @results[@host][:pwd] = r.chomp
109
+ end
110
+
111
+ def temperature()
112
+ instructions = 'cat /sys/class/thermal/thermal_zone0/temp'
113
+ r = @ssh ? @ssh.exec!(instructions) : system(instructions)
114
+ @results[@host][:temperature] = r.chomp
115
+ end
116
+
117
+ end
118
+
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: miab
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwOTAxMTUwMzQ5WhcN
15
+ MjAwODMxMTUwMzQ5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC3Zv/A
17
+ /JALt7giW7CIaiW9Nw8gUqLgLcJ2GmC2jiLsK0NfktSScHxZfcH3tlAobyHcRzEc
18
+ Z83GmRXEeu6+W9QL3WMQstteCjXqMfFpCTREmJ/b5P2bRNJ/WOXNbZRu5g19W99G
19
+ CrYezgO5YJ6NPjFG8P+cYljsd8Nm7JpqlarzYaoRW5NhuYn2s7QbpXZqw6QAv7aO
20
+ YcBxProLxrSaLYdTyk3PuQW9lAMGm2LyOzRiJWoZQ8effBBCRzV1uSps5v01O4bS
21
+ EZ4eJuNcmEp7aAj549wmeJoIPJOr6wdUb3s4VqDEO5l6TkuyKZcYFmocpmZ3ngBf
22
+ 4s3nlQfYuqpGdUY3ujDfM+bAQgbYa/IhVd1HBfrAo2WKKpMkDm8plID/NTVsW++B
23
+ vbExEOQDutpB+fSzn+9wQ84CUlBGJgZ0pqWdyeIneflJBJUAsvFb3ZFnsqt6Td7P
24
+ Bmx2QCy/s23aa1TgZe0aMahTT4YbeG8KgplprfBWOUb8j4NmP0Y2JV036CkCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUMiETNXAA
26
+ u+kmELhkfb1m3pilCXUwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAGcKspbIIlE4Cp9mHW0iznqW9M+b2tZxGHEs/cLhe
29
+ E0l9aOeLKg71taZO9DEXP7Hg7GVcxt9akQm8bXgl0AFT0iPtAa4HnXhMxYKpzdti
30
+ THwk2wXdxFQxdNIN2oubXab4eEuInw2mX4GsGE8J7hyt8UbkT/zx59i9ztOD4sag
31
+ mUJXOAmfGrOcQE6NJE97m2BIGmxVABJC+0PgCCILmCBJTMPaj3BtGprZmVE00oZw
32
+ DrTN68G5ifPDjqr4H2G1dEyOUSHILGyIMD/0e2MdMpwvrRg0pbIZXAEQ2XVXEsUH
33
+ 9DP/kToMLGEqKxh1v/EY5rixA8bCE+DcQoGmJSjV7PDunHTOp9lpXZdQCgQ0ZuB2
34
+ V01VGEvW9MCUidVyPMCJ9PmArZeX+TOSCX2ULHvFC1z0V0GpTHSH4D7O9VEiE5rd
35
+ 9irKsAp/hZt3dTbQOtnSlc9XREZZdegwOgu1FEqBqviNIn9R28OR237HExiWXwmw
36
+ HDTFIjk8XBqTunABuFUgr4qx
37
+ -----END CERTIFICATE-----
38
+ date: 2019-09-01 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: c32
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.2.0
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.2'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.2.0
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '0.2'
60
+ description:
61
+ email: james@jamesrobertson.eu
62
+ executables: []
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - lib/miab.rb
67
+ homepage: https://github.com/jrobertson/miab
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.0.1
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Message in a bottle (MIAB) is designed to execute remote commands through
90
+ SSH for system maintenance purposes.
91
+ test_files: []
metadata.gz.sig ADDED
Binary file