我正在尝试从 Linux 上的 ruby 脚本(比如 lin_r.rb)运行控制台应用程序(比如 win_a.exe;它的命令行参数很少)。 win_a.exe 正在与 Windows Server 2008 上的 Windows 服务交互。我想通过 lin_r.rb 在特定点运行 win_a.exe(原因是,此时;我需要传递给 win_a.exe 的参数很少并得到一些结果)
我在网上搜索过,但没有找到任何有用的链接。 我想到的一个解决方案是:
在 Windows 上创建 NFS 共享并将其映射到 Linux。
Linux:将参数/命令写入来自 lin_r.rb 的新文件(应在 NFS 共享上创建)
窗口:看门狗程序(需要写这个)寻找新文件。如果找到,执行带参数的win_a.exe,并将结果写入新的输出文件。
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/