class SshClass

This wrapper class is used to run ssh commands on linux machines

Public Instance Methods

ssh_run(script, ipaddr, linux_user = nil, linux_password = nil) click to toggle source
# File lib/miq_utilities/ssh.rb, line 16
def ssh_run(script, ipaddr, linux_user = nil, linux_password = nil)
  @logger = LoggingClass.new("#{self.class}:(#{__method__})")
  linux_user ||= 'root'
  linux_password ||= $evm.object.decrypt('linux_password').to_s
  begin
    Net::SSH.start(ipaddr, linux_user, password: linux_password, paranoid: Net::SSH::Verifiers::Null.new) do |ssh|
      command = script
      output = ssh.exec!(command)
      @logger.log(level: 'info', message: "ssh command being run on #{ipaddr}")
      @logger.log(level: 'info', message: "ssh script being run is #{script}")
      @logger.log(level: 'info', message: "SSH output = #{output}")
    end
  rescue => err
    raise("\n    Class:<#{self.class}>\n    Method:<#{__method__}>\n    Error:<#{err} - #{err.backtrace.join("\n")}>")
  end
end