【问题标题】:How can I call a vb.net program from a unix shell script如何从 unix shell 脚本调用 vb.net 程序
【发布时间】:2023-05-16 18:48:02
【问题描述】:

我需要能够从 AIX 服务器上的 unix shell 脚本启动 windows 服务器上的 vb.net 程序。我需要做什么才能使这成为可能?我是 .Net 方面的新手,但我在想,也许可以让 vb.net 程序成为某种 Web 服务,然后让 unix shell 脚本以某种方式调用它。但不知道我是否走在正确的轨道上。将不胜感激任何建议。谢谢。

【问题讨论】:

  • 您可以控制 VB.Net 程序吗?我的意思是,如果需要,您可以修改其来源吗?

标签: vb.net unix aix


【解决方案1】:

在 Windows 端,安装 PHP,然后使用 exec() 函数或其朋友启动 vb.net 程序。通过 wgetcurl 从 AIX 启动它。

如果您对安全隐患感到满意,也可以使用 netcat for windows (nc.exe)。

【讨论】:

  • 多么奇怪的想法...安装 php 来启动程序。因为它是 Windows,为什么不使用 IIS 的 blox asp.net 功能呢?甚至是一个简单的 http 自托管监听器?
  • 因为我对 PHP 的程序执行工具的优缺点了解得足够多,但对 ASP.NET 的了解不多。不过,另一个人可能会给出另一个答案。
  • 使用 ASP.Net 非常简单,只需调用System.Diagnostics.Process.Start(processStartInfo) 即可启动程序。可能需要注意一些安全设置,例如进程标识,但想法就在这里。
  • 是的,史蒂夫,我可以控制 VB.Net 程序。
  • 我知道 Process 类并广泛使用它——但我对进程模型、安全隐患等了解不够IIS 内部。您可能想根据您的知识创建一个答案,这肯定会引起 OP 的兴趣!
【解决方案2】:

为您提供了多种选择。

  1. 正如 Eugen Rieck 所建议的,您可以拥有一个轻量级的 http 应用程序(使用 asp.net 或 php,但我认为 asp.net 更符合逻辑)。该应用程序将包含一个非常简单的 http 处理程序,它将在到达页面时使用System.Diagnostics.Process.Start(processStartInfo) 触发程序(谨防 DOS 攻击)。要访问该页面,wget 或 curl 将完成这项工作(我相信 Eugen,因为我从未在 *nix 中编写过脚本)
  2. 您可以修改您的程序以作为服务运行(或创建一个新程序),该程序可以使用您知道的任何可互操作技术来监听“命令”。它可以是一个简单的 http 监听器、一个 WCF REST 服务、一个消息队列系统,甚至是一个文件系统监视器(监听文件夹中的文件)。
  3. 反转逻辑(可能不适用)。在 unix 端发布一个包含要做的工作的网页,并从 vb 程序中汇集这个工作。

【讨论】:

  • 感谢史蒂夫的总结。让我看看这个。无论最终解决方案是什么,我都会发回。谢谢大家的建议。