【问题标题】:Sending SSH shell commands with Apache SSHD使用 Apache SSHD 发送 SSH shell 命令
【发布时间】:2013-06-03 23:13:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: java apache ssh sshd


    【解决方案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 可以让您抢先一步。

    【讨论】:

      【解决方案2】:

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

      我不得不稍微修改他们的 sn-p,这对我有用:

      sshd.setCommandFactory(new CommandFactory() {
                  public Command createCommand(String command) {
                      return new ProcessShellFactory(" ")).create();
                  }
              });
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 回答问题的额外上下文将显着改善其长期价值。请edit你的答案添加一些解释。
      猜你喜欢
      • 2011-09-12
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 2020-11-14
      • 2012-09-20
      • 2019-11-12
      • 2015-12-14
      • 1970-01-01
      相关资源
      最近更新 更多