当前位置: 首页 > 面试题库 >

如何用Java编写ssh的stdin?

澹台星光
2023-03-14
问题内容

一切在命令行上都可以正常运行,但是当我将所需的内容转换为Java时,接收过程在stdin上什么都收不到。

这是我所拥有的:

private void deployWarFile(File warFile, String instanceId) throws IOException, InterruptedException {
    Runtime runtime = Runtime.getRuntime();
    // FIXME(nyap): Use Jsch.
    Process deployWarFile = runtime.exec(new String[]{
            "ssh",
            "gateway",
            "/path/to/count-the-bytes"});

    OutputStream deployWarFileStdin = deployWarFile.getOutputStream();
    InputStream deployWarFileStdout = new BufferedInputStream(deployWarFile.getInputStream());
    InputStream warFileInputStream = new FileInputStream(warFile);

    IOUtils.copy(warFileInputStream, deployWarFileStdin);
    IOUtils.copy(deployWarFileStdout, System.out);

    warFileInputStream.close();
    deployWarFileStdout.close();
    deployWarFileStdin.close();

    int status = deployWarFile.waitFor();
    System.out.println("************ Deployed with status " + status + " file handles. ************");
}

脚本“ count-the-bytes”很简单:

#!/bin/bash

echo "************ counting stdin bytes ************"
wc -c
echo "************ counted stdin bytes ************"

输出表明该函数挂在’wc -c’行-永远不会到达’counted stdin bytes’行。

这是怎么回事?使用Jsch会有所帮助吗?


问题答案:

您可能希望在wc -c返回之前尝试关闭输出流。

IOUtils.copy(warFileInputStream, deployWarFileStdin);
deployWarFileStdin.close();
IOUtils.copy(deployWarFileStdout, System.out);

warFileInputStream.close();
deployWarFileStdout.close();


 类似资料:
  • 问题内容: 我简要阅读了有关Maxine的信息,这是一个用Java编写的开源JVM实现。这对我来说听起来很圆。如果java要求运行虚拟机,那么如何用Java编写虚拟机本身(VM代码是否需要运行VM的虚拟机,依此类推?)。 编辑 :好的,所以我看到我忽略了Java不必在VM中运行的事实。那如何解释如何用LISP编写LISP编译器呢?还是这完全是一个新问题? 问题答案: 最初,您认为Java需要虚拟机

  • 问题内容: 可能吗? 问题答案: 如果您的意思是匿名函数, 并且在Java 8之前使用的是Java版本, 那么总而言之,不是。(如果您使用Java 8+,请阅读有关lambda表达式的信息 ) 但是,您可以使用以下功能实现接口: 并且您可以将其与内部类一起使用以获取几乎匿名的功能:)

  • 问题内容: 我有一些当前代码,问题是它创建了一个1252代码页文件,我想强制它创建一个UTF-8文件 任何人都可以通过此代码帮助我,因为我说它当前可以工作…但是我需要强制保存utf ..我可以传递参数或其他东西吗? 这就是我所拥有的,任何帮助我都感激不尽 问题答案: 而不是使用,创建一个。然后,你可以将其包装在中,以允许你在构造函数中传递编码。然后,你可以将数据写入语句中:

  • 问题内容: 尽管这可能是Java Web Services的副本,但我想知道从哪里开始和继续。过去,我花了很多时间来找到从哪里开始,但我却没有。阅读有关Web服务的页面时,有很多术语和混乱(至少对我来说是如此!)。有很多术语- 例如Web Service和其他我不知道的术语。该用户组可以合并并提供易于理解和遵循的Java Web Services的高级概述吗?我感谢您的好意,并感谢您的帮助。 问题

  • 问题内容: 您如何用Java编写(并运行)正确的微基准测试? 我正在寻找一些代码示例和注释,以说明要考虑的各种问题。 示例:基准测试应该测量时间/迭代或迭代/时间,为什么? 问题答案: 有关从Java HotSpot的创建者编写微基准测试的提示: 规则0:阅读有关JVM和微基准测试的著名论文。好的人是布莱恩·格茨(Brian Goetz),2005年。不要对微观基准期望太高;它们仅测量有限范围的J

  • 问题内容: 我正在尝试根据从《 AI游戏程序员的技术》一书中选取的技术编写一种遗传算法,该技术对种群的基因使用二进制编码和适应性比例选择(也称为轮盘选择)。在程序内以二维数组随机生成。 最近,我遇到了一段伪代码并尝试实现它,但是遇到了一些我需要做的事情方面的问题。我检查了许多书籍和一些开源代码,但仍在努力取得进展。我了解我必须获得总体适应度的总和,在总和与零之间选择一个随机数,然后如果该数字大于父