【问题标题】:ruby on rails ssh connection check validityruby on rails ssh 连接检查有效性
【发布时间】:2012-07-10 00:25:56
【问题描述】:

我正在我的控制器中建立一个 ssh 连接,如果连接建立成功,我会显示一个视图。 如果未建立连接,我需要我的操作重定向到“denied_access”视图 这是我的观点,其中使用输入了他的详细信息:

<%= form_for :check_validity, :method => "get", :url => {:action => "check_validity"} do |f| %>
//enters user name and password here and submits
<% end%>

控制器中的检查有效性操作:

 def check_validity
     @USER = params[:check_validity][:username]
     @PASS = params[:check_validity][:password]
     @DOMAIN = params[:check_validity][:domain]
     @HOST = 'hostname'

     Net::SSH.start( @HOST, @USER, :password => @PASS ) do|ssh|

     @result = ssh.exec!("/lclapps/oppen/http/ldap-group-list-2.4.3.py #{@DOMAIN} #{@USER} #{@PASS}")
     end
        respond_to do |format|
         if(@result =~ /Informatica Developer/)
          format.html{redirect_to display_command_list_path({:username => @USER})}
         else
          format.html{redirect_to denied_access_path}
         end
         end
  end

此处已建立连接,正在检查结果中的 Informatica Developer 字符串并重定向到 display_command_list_path。但是我想在检查这个字符串之前检查连接是否建立,如果连接没有建立,则重定向到 denied_access_path。 我该怎么做?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 net-ssh


    【解决方案1】:

    在尝试与Net::SSH.start 连接时,如果凭据无效,您将收到Net::SSH::AuthenticationFailed 异常。

    begin
      Net::SSH.start( @HOST, @USER, :password => @PASS ) do |ssh|
        # ...
      end
    rescue Net::SSH::AuthenticationFailed => e
      # redirect to denied_access_path
    end
    
    # your respond_to block ...
    

    我还要提一下,如果@HOST 不好,它会引发SocketError。为此,您可以在上面的代码中添加第二个救援。

    【讨论】:

    • 谢谢,在我目前的项目中,主机是硬编码的,不可能有坏主机。但无论如何我也会添加套接字错误。
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 2022-01-20
    • 2011-05-10
    • 2014-01-15
    • 2020-03-18
    • 2014-05-23
    • 1970-01-01
    • 2016-04-01
    相关资源
    最近更新 更多