代码之家  ›  专栏  ›  技术社区  ›  Steve Brewer

从resque作业内部进行SSH连接失败

  •  1
  • Steve Brewer  · 技术社区  · 14 年前

    我有一个设置创建EC2实例的应用程序-我有一个resque任务,它将在服务器启动并运行后配置服务器(通过ssh):

        Net::SSH.start(server.dns_name, 'root', :keys => ['~/.ssh/testkey.pem'], :paranoid => false, :verbose => :debug) do |ssh|
             result = ssh.exec!("ls -l")
             puts result
        end
    

    我得到一个错误:

    *** (Job{serverbuild} | ServerBuilder | [22]) failed: #<Errno::ECONNREFUSED: Connection refused - connect(2)>
    

    如果我从irb或者rails应用程序运行这个程序,就可以了。有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Steve Brewer    14 年前

      begin
         Net::SSH.start(server.dns_name.to_s, 'root', :keys => ['/Users/stevebrewer/.ssh/testkey.pem'], :paranoid => false) do |ssh|
           result = ssh.exec!("ls -la")
           puts result
         end
      rescue
         if(retries < 5)
           Resque.enqueue_at(20.seconds.from_now, ServerBuilder, server_id, retries + 1)
         end
      end