通过网页远程启动ruby脚本

时间:2015-12-11 18:57:44

标签: ruby-on-rails ruby remote-access psexec

我在网络,2个工作站和一台服务器上有3台机器(实际上更多,但就本问题而言是3台)。服务器托管一个Rails应用程序,该应用程序由Workstation A上的用户访问,允许他们查看和分析来自服务器数据库的数据。我还在Workstation B上获得了一个生成数据的Ruby脚本,存储到服务器上的数据库。我希望Rails应用程序具有在A上的用户单击Rails应用程序页面上的某个按钮时在Workstation B上启动该Ruby脚本的功能,以便1.尽可能多地将我的系统包含在应用程序中2.我可以避免通过远程桌面连接,甚至更糟糕的是,实际上去工作站B.

我真的不知道如何在基本水平上接近这个;我过去曾使用PSExec来远程启动流程,但我不知道该工具是否适用于此应用程序。如果它是我无法想象如何使用它为此目的。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

从ruby-- systemexecbackticksopen3启动子流程有很多种不同的方法。它们完全不同,具体取决于您希望如何与其进行完全互动 - this answer to a similar question contains a handy flowchart。我不确定哪个版本的Windows与哪个版本的Ruby最合适?你应该搜索这些选项和你的版本中的每一个来查找。

在rails应用程序的控制器操作中,您可以调用其中一个执行ruby脚本,例如:

require 'open3'

class WhateverController < ActionController
  def start
    Open3.popen3('ruby your_script.rb') {|stdin, stdout, stderr, wait_thr|
      # do whatever you need to with the output streams here
    }
    render nothing: true # So that the request returns to the user who pushed the button
  end
end

我建议你做一个POST请求,确保你有权限,可能跟踪上次有人运行这个请求,如果需要很长时间才能运行而你不想要人按下按钮等等。

相关问题