1

我想使用 JSCH 通过 SSH 控制 Java 中的远程系统。前端是一个简单的按钮 GUI,可触发命令的执行。一些控制是时间关键的,在按钮按下和命令执行之间应该没有大的延迟。

我的问题:每次打开一个新通道,后端需要大约8秒来初始化,直到命令执行。(后端接口用RBSH afaik实现)

如果我通过控制台客户端运行正常会话,则一切运行良好,没有更大的延迟。

我的问题:有没有办法初始化一个通道来执行一些命令并顺序读取输出(并且只有命令输出)?

我已经发现session.openChannel("shell")可以提供所需的功能,但我不知道如何正确地做到这一点。

编辑:我不依赖于 JSCH。如果有另一个图书馆可以做到这一点,我也愿意

4

1 回答 1

2

你想要一个“exec”通道而不是一个“shell”通道。SCP 使用 exec 通道,因此请查看Internet 上的 SCP 示例SCP 库之一。

或者,如果您控制远程服务器,您可以为要运行的命令定义一个“子系统”,并通过子系统通道运行它。exec 通道和子系统之间的最大区别在于谁指定了要执行的命令。exec 通道将执行客户端提供的命令。对于子系统,客户端只需按名称请求子系统,服务器运行正确的命令(或以其他方式提供服务)。SFTP 使用一个名为“sftp-server”的子系统,因此您可以查看 Jsch 的 SFTP 类是如何实现的。

于 2013-09-23T14:41:45.223 回答