1

从 PC 说,SSH 客户端将发送命令(例如我的程序的自定义命令,例如(“显示设备列表”))。在我的 Linux 端,我想要一个程序来接收通过 SSH 发送的这些命令并执行它们。

我正在尝试编写一个c在 linux 端运行的程序来解释发送的自定义命令并根据我的要求处理它们。关于我将如何实现这一目标的任何建议?

更新: 这里有 2 个程序。第一个在 PC1 上运行的程序,它提供了一个命令行界面,用户可以通过该界面发出命令。第二个程序位于 Linux 端(PC2),它必须接收这些命令并对其进行处理。现在我正在考虑如何获取这些命令的第二个程序。

4

2 回答 2

2

您至少可以通过两种不同的方式执行此操作:

  1. 通过 ssh 执行 C 程序(比如客户端)并将命令作为参数发送。客户端解析参数并做任何事情。您需要为每个命令运行客户端。

  2. 您的 C 程序从标准输入读取命令,因此您通过 ssh 执行 C 程序一次,并将您的命令通过管道传输到 ssh。

如果您的命令不是那么频繁,那么执行第一个。您甚至可以在后台执行 ssh 实例并有效地并行运行客户端命令。如果您按顺序有很多命令,则执行第二种方式。并行运行它们会更难,解析命令也相对更难,因为第一种方式会给你每个参数作为不同的参数。使用第二种方法,处理频繁的命令将更加高效和快捷,因为您不会为每个命令建立连接并分叉一个进程。

于 2013-01-01T06:34:37.577 回答
0

这实际上是关于与另一个程序进行通信,与 ssh 几乎没有关系 - 因为 ssh 只是“管道” - 你需要做的是打开两个管道(一个用于标准输入,一个用于标准输出)到你的应用程序 [哪个恰好是 ssh],并写入标准输入管道,并从标准输出管道读取。如果您可以使用常规(本地)程序执行此操作,那么您需要做的就是将“ssh”添加到您正在执行的行中,然后您就完成了。

如果您不明白这意味着什么,请查找 exec、popen、管道等。

您显然还需要另一端的程序从其标准输入读取并写入其标准输出。但这是正常的命令行编程,所以我不认为这是一个大问题。

于 2013-01-01T11:44:59.670 回答