【问题标题】:Interpreting commands sent over ssh解释通过 ssh 发送的命令
【发布时间】:2012-12-16 00:18:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: c ssh


    【解决方案1】:

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

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

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

    【讨论】:

    • 只是为了检查我是否理解正确。我通过它获取用户 cmds 的 Cmd Line Interface,这些用户 cmds 将被写入 Stdin 管道。第二个程序将这些 cmds 作为来自 stdin 管道的输入并处理 cmds 并将输出写入 stdout 管道。整个事情都是通过 ssh 运行的。
    • 我会这样做,是的。
    【解决方案2】:

    您至少可以通过两种不同的方式做到这一点:

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

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

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

    【讨论】:

    • 我已经更新了这个问题。我认为我不能让第一个程序通过 SSH 执行,因为它更像是一个命令行接口。所以无论输入什么命令,我都必须在第二台 linux 机器上作为自定义命令接收。(因为它不是系统命令)我必须解释并执行我自己的操作。
    猜你喜欢
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多