在`initialize`块中使用Net :: SSH不起作用

时间:2014-11-12 14:31:43

标签: ruby net-ssh

我想连接到远程服务器并在那里运行一些命令。为此,我正在编写以下Ruby脚本,它工作正常。

@hostname = "SERVER_NAME"
@username = "user"
@password = "pass"
@cmd = "ls -alt"

begin
  @ssh = Net::SSH.start(@hostname, @username, :password => @password)
  puts "#{@ssh}"
  res = @ssh.exec!(@cmd)
  @ssh.close
  puts res
rescue
  puts "Unable to connect to #{@hostname} using #{@username}/#{@password}"
end

但是当我尝试将相同的代码放在initialize块中时,它无效。以下是代码:

def initialize(hostname, user, password)
  @hostname = "#{hostname}"
  @username = "#{user}"
  @password = "#{password}"

  begin
    puts "entered begin"
    @ssh = Net::SSH.start(@hostname, @username, :password => @password)
    puts "#{@ssh}"
    res = @ssh.exec!(@cmd)
    puts "#{res}"
    # @ssh.close
    puts res
  rescue => e
    puts e
    puts "#{@ssh} Unable to connect to #{@hostname} using #{@username}/#{@password}"
  end
end

打印@ssh在第一和第二代码块中给出不同的结果。

有人可以帮我弄清楚出了什么问题吗?

0 个答案:

没有答案