CloudyScripts 1.5.20 → 1.5.21

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.
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ require 'rake/testtask'
12
12
 
13
13
  spec = Gem::Specification.new do |s|
14
14
  s.name = 'CloudyScripts'
15
- s.version = '1.5.20'
15
+ s.version = '1.5.21'
16
16
  s.has_rdoc = true
17
17
  s.extra_rdoc_files = ['README.rdoc', 'LICENSE']
18
18
  s.summary = 'Scripts to facilitate programming for infrastructure clouds.'
@@ -5,9 +5,10 @@ require 'timeout'
5
5
 
6
6
  # Provides methods to be executed via ssh to remote instances.
7
7
  class RemoteCommandHandler
8
- attr_accessor :logger, :ssh_session
9
- def initialize
8
+ attr_accessor :logger, :ssh_session, :use_sudo
9
+ def initialize()
10
10
  @logger = Logger.new(STDOUT)
11
+ @use_sudo = false
11
12
  end
12
13
 
13
14
  # Connect to the machine as root using a keyfile.
@@ -16,6 +17,7 @@ class RemoteCommandHandler
16
17
  # * keyfile: path of the keyfile to be used for authentication
17
18
  def connect_with_keyfile(ip, user_name, keyfile, timeout = 30)
18
19
  @ssh_session = Net::SSH.start(ip, user_name, {:keys => [keyfile], :timeout => timeout})
20
+ @use_sudo = true unless user_name.strip == 'root'
19
21
  end
20
22
 
21
23
  # Connect to the machine as root using keydata from a keyfile.
@@ -25,6 +27,7 @@ class RemoteCommandHandler
25
27
  # * key_data: key_data to be used for authentication
26
28
  def connect(ip, user, key_data, timeout = 30)
27
29
  @ssh_session = Net::SSH.start(ip, user, {:key_data => [key_data], :timeout => timeout})
30
+ @use_sudo = true unless user.strip == 'root'
28
31
  end
29
32
 
30
33
  # Disconnect the current handler
@@ -227,10 +230,11 @@ class RemoteCommandHandler
227
230
  # All stdout-data is written into #stdout, all stderr-data is written into #stderr
228
231
  def remote_exec_helper(exec_string, stdout = [], stderr = [], debug = false)
229
232
  result = true
233
+ sudo = (@use_sudo ? "sudo " : "")
230
234
  the_channel = @ssh_session.open_channel do |channel|
231
- channel.exec("sudo #{exec_string}") do |ch, success|
235
+ channel.exec("#{sudo}#{exec_string}") do |ch, success|
232
236
  if success
233
- @logger.debug("RemoteCommandHandler: starts executing sudo #{exec_string}") if debug
237
+ @logger.debug("RemoteCommandHandler: starts executing #{sudo}#{exec_string}") if debug
234
238
  ch.on_data() do |ch, data|
235
239
  stdout << data unless data == nil || stdout == nil
236
240
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 5
8
- - 20
9
- version: 1.5.20
8
+ - 21
9
+ version: 1.5.21
10
10
  platform: ruby
11
11
  authors:
12
12
  - Matthias Jung