【问题标题】:How to up an aplication on remote linux and wait for answer如何在远程 linux 上启动应用程序并等待答案
【发布时间】:2011-09-15 19:20:23
【问题描述】:

有人可以告诉我最好的方法,通过 Web Java 应用程序,如何在远程机器 (linux) 上运行应用程序以及如何知道该应用程序是否已经完成。我知道应用程序会自动终止,所以只想等待答案。

非常欢迎任何帮助或建议。

【问题讨论】:

  • 您或许可以通过 SSH 连接。您可以使用命令行或 Java 库进行 SSH。
  • @YGomez @Peter 像这样: Process p = Runtime.getRuntime().exec("这里我需要连接(ssh with passw) 并发送我的命令");对吗?

标签: java linux shell process


【解决方案1】:

我被这个措辞弄糊涂了,所以我假设如下:Web 应用程序和远程应用程序在两台不同的机器上运行,而远程应用程序在 Linux 上。

如果是这种情况,那么最好使用 Java 的 SSH 库(有几个 - JSchsshjGanymed SSH-2,以连接到远程计算机并在其上运行命令。这是比使用 ProcessBuilder 更好的方法,因为它使您从向终端 (which can get quite tricky) 提供密码的问题中抽象出来。

我不确定您所说的这句话是什么意思:“我知道应用程序会自动终止,所以只是想等待答案。”所以我将做另一个假设,即您想知道远程进程是否成功终止。我不确定上面发布的任何 SSH 库是否允许您以非平凡的方式获取远程进程状态,因此您最好为您的远程命令编写一个 shell 包装器,它将返回一条可解析的消息。

如果您在同一台机器上同时运行两者,请使用 ProcessBuilder。

【讨论】:

  • 您认为哪个最容易使用? JSch、sshj、GanumerSSH-2
  • 好吧,如果你能看懂JSch的例子,就用它吧。尽管 Eclipse、maven 和其他 FOSS 项目很少使用它,但它以没有很好的文档记录而闻名。在你的情况下可能就足够了。但是,如果您需要了解幕后的工作原理,sshj 似乎是一个更好的选择。 编辑: 你应该阅读this opinion piece。简而言之,如果您遇到无法诊断的问题,您就知道是时候使用 sshj了。
  • 也许GSOC
  • @coffee,GSOC 现在变成了 sshj。
猜你喜欢
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多