我正在尝试从linux上的ruby脚本(例如lin_r.rb)运行控制台应用程序(比如win_a.exe;它有很少的命令行参数)。 win_a.exe正在与Windows服务器2008上的Windows服务进行交互。我想通过lin_r.rb在特定点运行win_a.exe(原因是,此时;我有几个参数需要传递给win_a.exe得到一些结果)
我在网上搜索但我没有得到任何有用的链接。 我的一个解决方案是:
在Windows上创建NFS共享并将其映射到linux。
Linux:从lin_r.rb在新文件中写入参数/命令(应在NFS共享上创建)
窗口:看门狗程序(需要写这个)寻找新文件。如果发现带参数执行win_a.exe并将结果写入新的文件。
Linux:是的!得到了结果
这是好方法吗?你觉得怎么样?
谢谢,Vipul
答案 0 :(得分: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则编写文件)是您已授权的人有权访问。