解释通过ssh发送的命令

时间:2013-01-01 06:26:03

标签: c ssh

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

如果你不明白这意味着什么,请查看exec,popen,pipe等。

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