oxidized-ssh 0.1.1.1 → 0.1.2
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/lib/oxidized/ssh.rb +25 -9
- data/lib/oxidized/ssh/version.rb +5 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c45bf726f7d3c22eb878169ae8592d04f34d3b8
|
4
|
+
data.tar.gz: 9820acba3c7bad72fc906b83b308c44e02b452d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc2fa8e5687d2bc8ac2d15568dd880de213d97bf28a05354faeaa054a2ff9a96099e62499a46e96a4b25c7f377cbad2c644deb8410758871c902b715027d9032
|
7
|
+
data.tar.gz: 63dbb43e27c3e0ab9f1cdf24933f1501cbc517aea7b5b3e53cf0a46ead67e6c544f79c5bd530f507ac6f111d3b08c98ba2ec8dc5e972117d841d2b684dabf40b
|
data/lib/oxidized/ssh.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require_relative "ssh/version"
|
2
2
|
require 'net/ssh'
|
3
|
-
require 'timeout'
|
3
|
+
require 'timeout'
|
4
|
+
require 'awesome_print'
|
4
5
|
|
5
6
|
module Oxidized
|
6
|
-
class
|
7
|
-
|
7
|
+
class SSH
|
8
|
+
|
8
9
|
attr_reader :connection, :ip, :username, :password
|
9
10
|
attr_reader :prompt, :verbosity, :exec, :pty_options
|
10
11
|
attr_reader :port, :output, :session
|
@@ -18,8 +19,9 @@ module Oxidized
|
|
18
19
|
@exec = options[:exec]
|
19
20
|
@pty_options = options[:pty_options] ||= { term: "vt100" }
|
20
21
|
@port = options[:port] ||= 22
|
21
|
-
@output = String.new
|
22
|
+
@output = String.new
|
22
23
|
@logger = options[:logger] ||= Logger.new(STDOUT)
|
24
|
+
@expectation_handler = options[:expectation_handler]
|
23
25
|
end
|
24
26
|
|
25
27
|
def start
|
@@ -32,14 +34,14 @@ module Oxidized
|
|
32
34
|
def exec!(params)
|
33
35
|
check_for_connection
|
34
36
|
exec(params)
|
35
|
-
@output.gsub(/\r\n
|
37
|
+
@output.gsub(/\r\n/,"\n")
|
36
38
|
end
|
37
39
|
|
38
40
|
def check_for_connection
|
39
41
|
prep_connection unless @session
|
40
42
|
end
|
41
43
|
|
42
|
-
def exec(params)
|
44
|
+
def exec(params)
|
43
45
|
@logger.debug "sending command #{params} with expectation of #{@prompt}"
|
44
46
|
if @exec
|
45
47
|
@connection.exec!(params)
|
@@ -49,19 +51,24 @@ module Oxidized
|
|
49
51
|
end
|
50
52
|
|
51
53
|
def collect_output(params)
|
52
|
-
send_data(params + "\n")
|
54
|
+
send_data((params + "\n"))
|
53
55
|
return @output
|
54
56
|
end
|
55
57
|
|
56
58
|
def send_data(params)
|
57
59
|
expect @prompt
|
58
60
|
reset_output_buffer
|
59
|
-
|
61
|
+
send(params)
|
60
62
|
@session.process
|
61
63
|
expect @prompt
|
64
|
+
@output
|
65
|
+
end
|
66
|
+
|
67
|
+
def send(params)
|
68
|
+
@session.send_data params
|
62
69
|
end
|
63
70
|
|
64
|
-
def expect *regexps
|
71
|
+
def expect *regexps
|
65
72
|
regexps = [regexps].flatten
|
66
73
|
@logger.debug "expecting #{regexps.inspect} at #{@ip}"
|
67
74
|
@connection.loop(0.1) do
|
@@ -94,8 +101,17 @@ module Oxidized
|
|
94
101
|
|
95
102
|
def set_data_hook(ch)
|
96
103
|
ch.on_data do |_ch, data|
|
104
|
+
@logger.debug "received #{data}"
|
97
105
|
@output << data
|
106
|
+
@output = expectation_list_handler(@output) if @expectation_handler
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def expectation_list_handler(data)
|
111
|
+
@expectation_handler.each_slice(2) do |handler, meth|
|
112
|
+
handler.method(meth.to_sym).call(self, data)
|
98
113
|
end
|
114
|
+
@output
|
99
115
|
end
|
100
116
|
|
101
117
|
def request_channels(ch)
|
data/lib/oxidized/ssh/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
module Oxidized
|
2
|
-
module Ssh
|
3
|
-
VERSION = "0.1.
|
4
|
-
end
|
5
|
-
end
|
1
|
+
module Oxidized
|
2
|
+
module Ssh
|
3
|
+
VERSION = "0.1.2"
|
4
|
+
end
|
5
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oxidized-ssh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Schylar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-ssh
|