ruby-on-rails - 简单的SSH测试Rails

标签 ruby-on-rails ruby ssh controller

在ssh进入rails应用程序中的远程计算机后,我只是试图列出目录,但没有得到所需的输出,我在俯视什么?主机是IP。

Controller -

def index
  @ssh_test = Net::SSH.start( :host =>'xx.x.xx.xx',:user => 'name', :password => 'secret' ) do |ssh|
   result = ssh.exec!('ls')
   puts result
  end
end

gem 文件
gem 'net-ssh'

View
<h2><%= @ssh_test %></h2>

当前目录目录不应该显示在我的 View 中吗?感谢您的关注。

更新

这是更新的进度,似乎仍无法完全掌握。
before_filter :set_ssh, :only => [:index]


  def index
    @ssh_dir = Net::SSH.start( @host, @user, :password => @password ) do |ssh|
    result = ssh.exec!('ls')
  end

  def set_ssh
    @host = 'xx.x.xx.xx'
    @user = 'user'
    @password = 'password'
  end

View -
<h1><%= @ssh_dir( host, user, password).inspect %></h1>

最佳答案

您需要返回结果,并且调用start的方式不正确,请尝试以下操作:

def index
  @ssh_test = Net::SSH.start('xx.x.xx.xx','name', :password => 'secret' ) do |ssh|
   result = ssh.exec!('ls')
   result
  end
end

这是根据http://net-ssh.github.com/net-ssh/在net-ssh版本2中调用start的正确方法。

编辑:回答在哪里放置您的配置。

如果您要使用的ssh服务器在所有环境中都是固定的,那么我可能会将其放在初始化程序中:
config/initializers/my_ssh_config.rb

将会有:
$SSH_HOST = 'xx.x.xx.xx'
$SSH_USERNAME = 'name'
$SSH_PASSWORD = 'secret' 

注意,个人而言,我不会将用户名和密码存储在配置中,但也许首先尝试使其生效。 (我通常将其设置为环境变量,并执行$ SSH_PASSWORD = ENV ['SSH_PASSWORD']等)

然后,您的 Controller Action 将如下所示:

定义指数
@ssh_test = Net::SSH.start($ SSH_HOST,$ SSH_USERNAME,:password => $ SSH_PASSWORD)做| ssh |
结果= ssh.exec!('ls')
结果
结束
结束

您也可以将其添加到环境文件中(例如,test.rb,development.rb)。

关于ruby-on-rails - 简单的SSH测试Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15033640/

相关文章:

docker - 如何连接到在 docker 容器上运行的远程 Jupyter Notebook?

使用预先存在的公钥进行 Git 克隆

ruby-on-rails - Cap Deploy 在新客户端机器上失败

ruby-on-rails - Ruby 从 23+9.23 = 32.230000000000004 得到看似不稳定的结果

ruby-on-rails - 通过以下方式提前加载嵌套关联、belongs_to 和 has_one

ruby-on-rails - 我的 Rails 应用程序不喜欢我的属性

ruby-on-rails - 在现有路由的 rspec 测试中找不到路由

eclipse - 使用 Eclipse Neon 的 SSH 和 Egit

ruby-on-rails - Ruby/Rails 调试 : Break when a value of an object/variable changes

ruby-on-rails - 通过 SendGrid 使用 Ruby on Rails 发送带附件的电子邮件