0

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

目标

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

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

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

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

  4. Linux:是的!得到结果

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

谢谢, 维普尔

4

1 回答 1

1

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

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

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

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

于 2013-02-12T20:40:37.550 回答