spectre-ssh 1.0.2 → 1.1.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 +4 -4
- data/lib/spectre/ssh.rb +26 -12
- metadata +11 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8548d3d2c8b5cf86005bc9c9884e8ffad6250783c997af68a9c37b5b1577d759
|
|
4
|
+
data.tar.gz: 70d690e4e1c0e16a5fcd8f9b3c05c3b00721933a374e6550410558aa0927742d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ef75af4b62cfd54b508b3ab2b0d974a811dc68f7c270ed2bb214720984f8d421bd90727e207f8208c402a1a0f7e83df3b7ac1c1081f7cfc07a993b02b81458a2
|
|
7
|
+
data.tar.gz: 9da77291b02ed303bd09273b5e85b073646fbd4cce4d17019d1230fd2bb32c279f6b76b55d13088e5674bc154ec48e52da33853a11e09b8cec85e854748d8ea6
|
data/lib/spectre/ssh.rb
CHANGED
|
@@ -8,9 +8,6 @@ module Spectre
|
|
|
8
8
|
@@cfg = {}
|
|
9
9
|
|
|
10
10
|
class SSHError < Exception
|
|
11
|
-
def initialize message
|
|
12
|
-
super message
|
|
13
|
-
end
|
|
14
11
|
end
|
|
15
12
|
|
|
16
13
|
class SSHConnection < Spectre::DslClass
|
|
@@ -26,6 +23,24 @@ module Spectre
|
|
|
26
23
|
@__output = ''
|
|
27
24
|
end
|
|
28
25
|
|
|
26
|
+
def username user
|
|
27
|
+
@__username = user
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def password pass
|
|
31
|
+
@__opts[:password] = pass
|
|
32
|
+
@__opts[:auth_methods].push 'password' unless @__opts[:auth_methods].include? 'password'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def private_key file_path
|
|
36
|
+
@__opts[:keys] = [file_path]
|
|
37
|
+
@__opts[:auth_methods].push 'publickey' unless @__opts[:auth_methods].include? 'publickey'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def passphrase phrase
|
|
41
|
+
@__opts[:passphrase] = phrase
|
|
42
|
+
end
|
|
43
|
+
|
|
29
44
|
def file_exists path
|
|
30
45
|
exec "ls #{path}"
|
|
31
46
|
exit_code == 0
|
|
@@ -38,6 +53,7 @@ module Spectre
|
|
|
38
53
|
|
|
39
54
|
def connect!
|
|
40
55
|
return unless @__session == nil or @__session.closed?
|
|
56
|
+
|
|
41
57
|
begin
|
|
42
58
|
@__session = Net::SSH.start(@__host, @__username, @__opts)
|
|
43
59
|
rescue SocketError
|
|
@@ -49,6 +65,7 @@ module Spectre
|
|
|
49
65
|
|
|
50
66
|
def close
|
|
51
67
|
return unless @__session and not @__session.closed?
|
|
68
|
+
|
|
52
69
|
@__session.close
|
|
53
70
|
end
|
|
54
71
|
|
|
@@ -76,20 +93,20 @@ module Spectre
|
|
|
76
93
|
log_str = "#{@__session.options[:user]}@#{@__session.host} -p #{@__session.options[:port]} #{command}"
|
|
77
94
|
|
|
78
95
|
@channel = @__session.open_channel do |channel|
|
|
79
|
-
channel.exec(command) do |
|
|
96
|
+
channel.exec(command) do |_ch, success|
|
|
80
97
|
abort "could not execute #{command} on #{@__session.host}" unless success
|
|
81
98
|
|
|
82
99
|
@__output = ''
|
|
83
100
|
|
|
84
|
-
channel.on_data do |
|
|
101
|
+
channel.on_data do |_, data|
|
|
85
102
|
@__output += data
|
|
86
103
|
end
|
|
87
104
|
|
|
88
|
-
channel.on_extended_data do |
|
|
105
|
+
channel.on_extended_data do |_, _type, data|
|
|
89
106
|
@__output += data
|
|
90
107
|
end
|
|
91
108
|
|
|
92
|
-
channel.on_request('exit-status') do |
|
|
109
|
+
channel.on_request('exit-status') do |_, data|
|
|
93
110
|
@__exit_code = data.read_long
|
|
94
111
|
end
|
|
95
112
|
|
|
@@ -97,7 +114,6 @@ module Spectre
|
|
|
97
114
|
# exit_code = data.read_long
|
|
98
115
|
# end
|
|
99
116
|
end
|
|
100
|
-
|
|
101
117
|
end
|
|
102
118
|
|
|
103
119
|
@channel.wait
|
|
@@ -119,8 +135,6 @@ module Spectre
|
|
|
119
135
|
|
|
120
136
|
class << self
|
|
121
137
|
def ssh name, options = {}, &block
|
|
122
|
-
raise "SSH connection '#{name}' not configured" unless @@cfg.key?(name) or options.count > 0
|
|
123
|
-
|
|
124
138
|
cfg = @@cfg[name] || {}
|
|
125
139
|
|
|
126
140
|
host = cfg['host'] || name
|
|
@@ -150,7 +164,7 @@ module Spectre
|
|
|
150
164
|
end
|
|
151
165
|
|
|
152
166
|
Spectre.register do |config|
|
|
153
|
-
@@logger = ::
|
|
167
|
+
@@logger = Spectre::Logging::ModuleLogger.new(config, 'spectre/ssh')
|
|
154
168
|
|
|
155
169
|
if config.key? 'ssh'
|
|
156
170
|
config['ssh'].each do |name, cfg|
|
|
@@ -161,4 +175,4 @@ module Spectre
|
|
|
161
175
|
|
|
162
176
|
Spectre.delegate :ssh, to: self
|
|
163
177
|
end
|
|
164
|
-
end
|
|
178
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spectre-ssh
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Christian Neubauer
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-07-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: openssl
|
|
@@ -30,28 +30,28 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 7.1.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 7.1.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: spectre-core
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 1.
|
|
47
|
+
version: 1.14.3
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 1.
|
|
54
|
+
version: 1.14.3
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: ed25519
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -92,11 +92,10 @@ homepage: https://github.com/ionos-spectre/spectre-ssh
|
|
|
92
92
|
licenses:
|
|
93
93
|
- MIT
|
|
94
94
|
metadata:
|
|
95
|
-
allowed_push_host: https://rubygems.org/
|
|
96
95
|
homepage_uri: https://github.com/ionos-spectre/spectre-ssh
|
|
97
96
|
source_code_uri: https://github.com/ionos-spectre/spectre-ssh
|
|
98
97
|
changelog_uri: https://github.com/ionos-spectre/spectre-ssh/blob/master/CHANGELOG.md
|
|
99
|
-
post_install_message:
|
|
98
|
+
post_install_message:
|
|
100
99
|
rdoc_options: []
|
|
101
100
|
require_paths:
|
|
102
101
|
- lib
|
|
@@ -104,15 +103,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
104
103
|
requirements:
|
|
105
104
|
- - ">="
|
|
106
105
|
- !ruby/object:Gem::Version
|
|
107
|
-
version:
|
|
106
|
+
version: 3.0.0
|
|
108
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
108
|
requirements:
|
|
110
109
|
- - ">="
|
|
111
110
|
- !ruby/object:Gem::Version
|
|
112
111
|
version: '0'
|
|
113
112
|
requirements: []
|
|
114
|
-
rubygems_version: 3.3.
|
|
115
|
-
signing_key:
|
|
113
|
+
rubygems_version: 3.3.26
|
|
114
|
+
signing_key:
|
|
116
115
|
specification_version: 4
|
|
117
116
|
summary: SSH module for spectre
|
|
118
117
|
test_files: []
|