module ZTK::SSH::Command

SSH Console Command Helpers

Public Instance Methods

console_command() click to toggle source

Builds our SSH console command.

# File lib/ztk/ssh/command.rb, line 8
def console_command
  process_keys
  verbosity = ((ENV['LOG_LEVEL'] == "DEBUG") ? '-vv' : '-q')

  command = Array.new
  # command << [ %(sshpass -p '#{config.password}') ] if config.password
  command << [ %(ssh) ]
  command << [ verbosity ]
  command << [ "-x" ]
  command << [ "-a" ]
  command << [ "-o", "UserKnownHostsFile=/dev/null" ]
  command << [ "-o", "StrictHostKeyChecking=no" ]
  command << [ "-o", "KeepAlive=yes" ]
  command << [ "-o", "ServerAliveInterval=60" ]
  command << [ "-o", %(ProxyCommand="#{proxy_command}") ] if config.proxy_host_name
  !config.keys.nil? and !config.keys.empty? and [config.keys].flatten.compact.each do |key|
    command << [ "-i", key ]
  end
  command << [ "-p", config.port ] if config.port
  command << "#{config.user}@#{config.host_name}"
  command = command.flatten.compact.join(' ')
  config.ui.logger.debug { "console_command(#{command.inspect})" }
  command
end
proxy_command() click to toggle source

Builds our SSH proxy command.

# File lib/ztk/ssh/command.rb, line 34
def proxy_command
  !config.proxy_user and log_and_raise(SSHError, "You must specify an proxy user in order to SSH proxy.")
  !config.proxy_host_name and log_and_raise(SSHError, "You must specify an proxy host_name in order to SSH proxy.")

  process_keys
  verbosity = ((ENV['LOG_LEVEL'] == "DEBUG") ? '-vv' : '-q')

  command = Array.new
  # command << [ %(sshpass -p '#{config.proxy_password}') ] if config.proxy_password
  command << [ %(ssh) ]
  command << [ verbosity ]
  command << [ "-x" ]
  command << [ "-a" ]
  command << [ "-o", "UserKnownHostsFile=/dev/null" ]
  command << [ "-o", "StrictHostKeyChecking=no" ]
  command << [ "-o", "KeepAlive=yes" ]
  command << [ "-o", "ServerAliveInterval=60" ]
  !config.proxy_keys.nil? and !config.proxy_keys.empty? and [config.proxy_keys].flatten.compact.each do |proxy_key|
    command << [ "-i", proxy_key ]
  end
  command << [ "-p", config.proxy_port ] if config.proxy_port
  command << "#{config.proxy_user}@#{config.proxy_host_name}"
  command << "'/usr/bin/env nc %h %p'"
  command = command.flatten.compact.join(' ')
  config.ui.logger.debug { "proxy_command(#{command.inspect})" }
  command
end