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

使用Java在SSH上运行命令

柴磊
2023-03-14
问题内容

Scenerio:我想通过ssh从Java程序在远程机器上运行命令(我在开发机器上使用OpenSSH)。我也想通过传递密码来建立ssh连接,而不是像使用“期望”那样设置密钥。
问题:尝试执行“期望”之类的密码登录时,使用ProcessBuilder创建的流程似乎看不到密码提示。当运行常规的非ssh命令(例如’ls’)时,我可以获取流并与它们进行交互。我将标准错误和标准输出合并为一个流redirectErrorStream(true);因此我不会在标准错误中丢失它…当我使用’-v’选项运行ssh时,我看到了流中的所有日志记录,但没有看到提示。这是我第一次尝试将ProcessBuilder用于此类操作。我知道使用Python,Perl或良好的期望会更容易,但是我的老板想利用我们试图在现有Java程序中找回的东西(远程日志文件和运行脚本),所以我有些困惑。

在此先感谢您的帮助!


问题答案:

该提示仅在ssh连接到TTY 时才显示,而在Java中则不显示。

可能有一种方法可以在ssh应用程序的命令行中提供密码。那将是克服提示的方法。

或者,考虑从本机Java代码直接连接到主机服务器,而不是运行外部应用程序。有上百万个库可以做到这一点。



 类似资料:
  • 问题内容: 我正在编写一个脚本来自动化Python中的某些命令行命令。目前,我正在打电话: 但是我需要在远程计算机上运行一些命令。手动地,我将使用ssh登录,然后运行命令。我将如何在Python中自动执行此操作?我需要使用(已知)密码登录到远程计算机,所以我不能只使用,我想知道是否应该使用一个模块? 问题答案:

  • 问题内容: 我正在SSH shell会话上运行命令,为了获得该命令,我在官方示例后面使用了JSch 。 我也在 StackOverflow* 上也遵循此示例编写了自己的代码 * 这是 我的代码: 看起来不错,但奇怪的是 它只能在调试模式下工作 。如果我运行它,程序将无法执行。我认为它锁定 了while循环, 但是我不明白为什么。没有while循环,代码将到达终点,但是不执行任何shell命令。 我

  • 我使用Netbeans作为IDE 你能帮我找出问题吗?!

  • 有一个叫做“袖扣”的程序,运行方式如下: 本程序以1个文件作为输入,在“output-dir”中生成4个文件作为输出。 多谢了。

  • 我必须运行一个Java程序,其中有一个嵌入在框架内的小程序。我这样做是因为我想把applet作为一个应用程序来运行。 当我在本地机器上运行它时,它工作得很棒,但当我想在远程机器上运行它时,它就不工作了。程序似乎正在运行我的main(),但我看不到窗口。 我尝试了ssh-x和ssh-t,但没有用。 null 感谢任何帮助。 null

  • 我想在Linux上运行SSH命令来启动/停止带有Laravel特使的服务器。但是,对于SSH::into()的语法,我得到了一个错误。我不知道该怎么办完全卡住了。我们需要一种方法来解决这个问题,让它发挥作用。特使设置并与“php artisan”命令配合使用: 命令:特使运行foo--user=root--host=94.130.97.242 这就是我为SSH::into()启动/停止服务器所做的