0

我正在尝试使用Apache SSHD 库向 SSH shell 发送命令。我已阅读 JavaDoc;但它是如此稀疏,以至于我无法理解如何使用该库。

很抱歉,我无法链接到 JavaDoc,但它似乎在网络上不可用。我能够设置一个使用 System.in、System.out 和 System.err 流发送命令和读取结果的测试。该项目的最终目标是将字符串发送到外壳,处理结果,发送另一个字符串,处理结果等,同时留在同一个外壳中。我知道我可以打开多个 ChannelExec;但这会创建多个渠道。

本质上,我想让我的程序与 shell 交互。

4

2 回答 2

0

https://mina.apache.org/sshd-project/tips.html

我不得不稍微修改他们的片段,这对我有用:

sshd.setCommandFactory(new CommandFactory() {
            public Command createCommand(String command) {
                return new ProcessShellFactory(" ")).create();
            }
        });
于 2016-05-04T09:05:43.677 回答
-1

如果你想要一个完全自定义和控制的 shell,那么你可以为 org.apache.sshd.server.Command 类和 run() 方法编写你自己的实现,调用 java.lang.Process 来执行你自己的 shell/DOS 脚本并通过Command类的输入输出流将结果返回给调用程序。

如果调用程序可以执行普通的 shell 命令,如 dir / mkdir / touch 等,那么你可以使用 org.apache.sshd.server.shell.InvertedShell 类。Apache SSHD 包中有一个测试类 InvertedShellWrapperTest.java 可以让您抢先一步。

于 2014-03-07T07:23:34.223 回答