Class: Ssh
- Inherits:
-
Object
- Object
- Ssh
- Defined in:
- lib/vmfloaty/ssh.rb
Class Method Summary collapse
- .command_string(verbose, service, host_os, use_token) ⇒ Object
- .ssh(verbose, service, host_os, use_token) ⇒ Object
- .which(cmd) ⇒ Object
Class Method Details
.command_string(verbose, service, host_os, use_token) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/vmfloaty/ssh.rb', line 17 def self.command_string(verbose, service, host_os, use_token) ssh_path = which('ssh') raise 'Could not determine path to ssh' unless ssh_path os_types = {} os_types[host_os] = 1 response = service.retrieve(verbose, os_types, use_token) raise "Could not get vm from #{service.type}:\n #{response}" unless response['ok'] user = /win/.match?(host_os) ? 'Administrator' : 'root' hostname = response[host_os]['hostname'] hostname = response[host_os]['hostname'][0] if response[host_os]['hostname'].is_a?(Array) hostname = "#{hostname}.#{response['domain']}" unless hostname.end_with?('puppetlabs.net') "#{ssh_path} #{user}@#{hostname}" end |
.ssh(verbose, service, host_os, use_token) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/vmfloaty/ssh.rb', line 36 def self.ssh(verbose, service, host_os, use_token) cmd = command_string(verbose, service, host_os, use_token) # TODO: Should this respect more ssh settings? Can it be configured # by users ssh config and does this respect those settings? Kernel.exec(cmd) nil end |
.which(cmd) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/vmfloaty/ssh.rb', line 4 def self.which(cmd) # Gets path of executable for given command exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| exts.each do |ext| exe = File.join(path, "#{cmd}#{ext}") return exe if File.executable?(exe) && !File.directory?(exe) end end nil end |