spectre-ssh 1.0.1 → 1.0.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/spectre/ssh.rb +24 -10
  3. metadata +43 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 774fafd0f95bfcbac2c96ffbb732918f1d7beb56c4045fcd5e0468c429664ff2
4
- data.tar.gz: 280800cbaf572c48ded2db30090484bed91df9605ed3f3d046e366d21ff42552
3
+ metadata.gz: 180b0db0cfa9d88522b4f4147f5b2e2e2bdb2c9da4743d6fac85599f71769ea6
4
+ data.tar.gz: 7b65847ee82c04053f4ad6d1bc91aab8aa92aada3703505027bb3167a35bd5fd
5
5
  SHA512:
6
- metadata.gz: 45c553eaeaaf6334e3ce12cae5a0c56fa022564436ea5368d7a94a61d35c4f0d8c09ee9972c5f36706ad85975984ce92ae4c489997790ec9a97911c8b1865241
7
- data.tar.gz: caf6aacbc8313f0a1d9e500ffe7861b39a423b61a873af078aff96262b5a95aea69ffb0b6d300a2b736ca5ae1706739f6771a8489d9b544c36b96adc6c6a8059
6
+ metadata.gz: 907a71a63ac527f78b981c5dde110ce5914361685195d7827d23e6d716dbeea7402dadbbe849e0cb13c3b63ebcb01a5c26a76fac3be14109d99ddca20858147e
7
+ data.tar.gz: 1b9031c4c95d3773fe1b8fe83f310149a3c07226cc66ddce63efffabae98c27b745d54db774e80cb7801c98db298cc8139ce184508dd7ec685d767a2b5f5eb29
data/lib/spectre/ssh.rb CHANGED
@@ -7,6 +7,12 @@ module Spectre
7
7
  module SSH
8
8
  @@cfg = {}
9
9
 
10
+ class SSHError < Exception
11
+ def initialize message
12
+ super message
13
+ end
14
+ end
15
+
10
16
  class SSHConnection < Spectre::DslClass
11
17
  def initialize host, username, opts, logger
12
18
  opts[:non_interactive] = true
@@ -32,7 +38,13 @@ module Spectre
32
38
 
33
39
  def connect!
34
40
  return unless @__session == nil or @__session.closed?
35
- @__session = Net::SSH.start(@__host, @__username, @__opts)
41
+ begin
42
+ @__session = Net::SSH.start(@__host, @__username, @__opts)
43
+ rescue SocketError
44
+ raise SSHError.new("Unable to connect to #{@__host} with user #{@__username}")
45
+ rescue Net::SSH::AuthenticationFailed
46
+ raise SSHError.new("Authentication failed for #{@__username}@#{@__host}. Please check password, SSH keys and passphrases.")
47
+ end
36
48
  end
37
49
 
38
50
  def close
@@ -106,24 +118,26 @@ module Spectre
106
118
 
107
119
 
108
120
  class << self
109
- def ssh name, config = {}, &block
110
- raise "SSH connection '#{name}' not configured" unless @@cfg.key?(name) or config.count > 0
121
+ def ssh name, options = {}, &block
122
+ raise "SSH connection '#{name}' not configured" unless @@cfg.key?(name) or options.count > 0
111
123
 
112
124
  cfg = @@cfg[name] || {}
113
125
 
114
126
  host = cfg['host'] || name
115
- username = config[:username] || cfg['username']
116
- password = config[:password] || cfg['password']
127
+ username = options[:username] || cfg['username']
128
+ password = options[:password] || cfg['password']
117
129
 
118
130
  opts = {}
119
131
  opts[:password] = password
120
- opts[:port] = config[:port] || cfg['port'] || 22
121
- opts[:keys] = [cfg['key']] if cfg.key? 'key'
122
- opts[:passphrase] = cfg['passphrase'] if cfg.key? 'passphrase'
132
+ opts[:port] = options[:port] || cfg['port'] || 22
133
+
134
+ ssh_key = options[:key] || cfg['key']
135
+ opts[:keys] = [ssh_key] unless ssh_key.nil?
136
+ opts[:passphrase] = options[:passphrase] || cfg['passphrase']
123
137
 
124
138
  opts[:auth_methods] = []
125
- opts[:auth_methods].push 'publickey' if opts[:keys]
126
- opts[:auth_methods].push 'password' if opts[:password]
139
+ opts[:auth_methods].push 'publickey' unless opts[:keys].nil? or opts[:keys].empty?
140
+ opts[:auth_methods].push 'password' unless opts[:password].nil?
127
141
 
128
142
  ssh_con = SSHConnection.new(host, username, opts, @@logger)
129
143
 
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.1
4
+ version: 1.0.2
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: 2021-08-19 00:00:00.000000000 Z
11
+ date: 2022-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: openssl
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.0
19
+ version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.2.0
26
+ version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: net-ssh
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,31 +44,59 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.8.4
47
+ version: 1.8.0
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.8.4
54
+ version: 1.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: ed25519
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: bcrypt_pbkdf
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.1.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.1.0
55
83
  description: Adds SSH access functionality to the spectre framework
56
84
  email:
57
- - me@christianneubauer.de
85
+ - christian.neubauer@ionos.com
58
86
  executables: []
59
87
  extensions: []
60
88
  extra_rdoc_files: []
61
89
  files:
62
90
  - lib/spectre/ssh.rb
63
- homepage: https://github.com/cneubauer/spectre-ssh
91
+ homepage: https://github.com/ionos-spectre/spectre-ssh
64
92
  licenses:
65
93
  - MIT
66
94
  metadata:
67
95
  allowed_push_host: https://rubygems.org/
68
- homepage_uri: https://github.com/cneubauer/spectre-ssh
69
- source_code_uri: https://github.com/cneubauer/spectre-ssh
70
- changelog_uri: https://github.com/cneubauer/spectre-ssh/blob/master/CHANGELOG.md
71
- post_install_message:
96
+ homepage_uri: https://github.com/ionos-spectre/spectre-ssh
97
+ source_code_uri: https://github.com/ionos-spectre/spectre-ssh
98
+ changelog_uri: https://github.com/ionos-spectre/spectre-ssh/blob/master/CHANGELOG.md
99
+ post_install_message:
72
100
  rdoc_options: []
73
101
  require_paths:
74
102
  - lib
@@ -83,8 +111,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
111
  - !ruby/object:Gem::Version
84
112
  version: '0'
85
113
  requirements: []
86
- rubygems_version: 3.0.8
87
- signing_key:
114
+ rubygems_version: 3.3.7
115
+ signing_key:
88
116
  specification_version: 4
89
117
  summary: SSH module for spectre
90
118
  test_files: []