ruby - 如何从安装在 linux 上的 ruby​​ 在 windows 操作系统上执行控制台应用程序?

标签 ruby linux windows cross-platform

我正在尝试从 Linux 上的 ruby​​ 脚本(比如 lin_r.rb)运行控制台应用程序(比如 win_a.exe;它的命令行参数很少)。 win_a.exe 正在与 Windows Server 2008 上的 Windows 服务交互。我想通过 lin_r.rb 在特定点运行 win_a.exe(原因是,此时;我需要传递给 win_a.exe 的参数很少并得到一些结果)

Goal

我在网上搜索过,但没有找到任何有用的链接。 我想到的一个解决方案是:

  1. 在 Windows 上创建 NFS 共享并将其映射到 Linux。

  2. Linux:将参数/命令写入来自 lin_r.rb 的新文件(应在 NFS 共享上创建)

  3. 窗口:看门狗程序(需要写这个)寻找新文件。如果找到,执行带参数的win_a.exe,并将结果写入新的输出文件。

  4. Linux:是的!得到结果

这是好方法吗?你怎么看?

谢谢,Vipul

最佳答案

您的方法可以发挥作用,但是如果我要实现它,我会使用 HTTP 而不是 NFS。可能涉及的两台计算机都已经能够发出和接收 HTTP 请求,因此设置应该少于 NFS。

基本方法是让基于 linux 的脚本向 windows 机器发出 HTTP 请求,并将 .exe 的参数指定为查询参数(如果您使用 GET 请求)。在 Windows 端,您的“看门狗”程序将是一个小型 Web 服务,它会响应来自 Linux 机器的请求,使用指定的选项执行程序,并返回结果。

Windows 机器上的网络服务可以使用您喜欢的任何技术。我可能会使用 Sinatra+Thin,但选择取决于您。

无论您采用哪种方法,基于 NFS、基于 HTTP 或其他方法,您都应该确保考虑到安全性。这意味着您不应盲目地将从 lin_r.rb 接收到的参数传递给 win_a.exe 程序。您应该只接受特定参数,并且您应该努力验证提出请求(或者如果您使用 NFS 则编写文件)的人是您授权的人 可以访问。

关于ruby - 如何从安装在 linux 上的 ruby​​ 在 windows 操作系统上执行控制台应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14841142/

相关文章:

ruby-on-rails - 为什么在使用 send_file 时我的 ruby​​ 进程没有在我的 FastCGI 共享服务器上退出?

javascript - 关于 'application.js'文件的一些问题

linux - linux access命令的使用方法和test命令有什么区别

c# - 如何使用 Win32 API 在与 LocalSystem 帐户不同的帐户下安装服务?

windows - 运行 apache Storm 拓扑时出现 "Unable to delete file stormconf.ser"错误

ruby - 为什么 puts File.expand_path(File.dirname(File.dirname(__FILE__))) 给我不同的结果?

ruby - 枚举期间正在修改数组

java - Servlet/webapp 抛出 load() 异常

linux - 使用 jenkins 管道脚本找出最后一次提交

c++ - Windows:DLL 中的元信息