gpt4 book ai didi

通过 ssh 在远程服务器上运行多个不相关命令的 Java 库

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:50 27 4
gpt4 key购买 nike

我的 Java 应用程序必须像这样工作:

  1. 用户在 GUI 中选择 bash 命令并按“发送”。
  2. 应用程序为每个命令返回不同且独立的答案(例如,我们可以将它们存储在不同的文件中)。
  3. 每个命令都以交互方式运行,而不是批量运行(不能是“ls\n pwd\n”等)
  4. 在每个命令之后,应用程序将检查结果是否正确。如果是,它将发送下一个命令。
  5. 我们需要执行su <user>在远程主机上。

这将是一个更大应用程序的插件,所以像“尝试其他东西”(即 RPC、网络服务)这样的回答对我没有帮助:(

据我所知,我必须使用 SHELL 或至少保持 channel 连接。

我已经测试了 jsch 、 sshj 和 ethz.ssh2 但结果不佳。

我已经通过 stackoverflow 寻找问题的答案,例如:“通过 jsch-shell channel 发送命令到服务器”等。但它们都专注于在一行中发送整个命令。我需要一个交互式的、持久的 SSH session 。

我使用过 ExpectJ(带有一些输出流)。它解决了第 1、3、4、5 点。

但是第 2 点有问题。在我的应用程序中,我需要得到单独的答案。但我们不会知道它们的长度。命令提示符可能不同。任何人都知道如何“破解” ExpectJ 所以它会更加同步吗?我正在寻找这样的行为:发送,等待完整答案,发送,等待... 我已经尝试了一些基本的同步技巧,但这通常会导致超时和连接丢失。

最佳答案

你应该使用 ExpectJ , the Unix expect utility 的 Java 实现.

关于通过 ssh 在远程服务器上运行多个不相关命令的 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41168025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com