我想连接到远程服务器并在那里运行一些命令。为此,我正在编写以下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
在第一和第二代码块中给出不同的结果。
有人可以帮我弄清楚出了什么问题吗?