如何从java打开linux终端并能够在其中执行命令?

时间:2015-05-12 08:08:23

标签: java linux bash shell ssh

我想编写一个程序,通过ssh连接到远程机器并安装预定义的软件。此外,我想让用户看到所有可见的安装过程。我遇到了一些问题:如何从java打开终端并向它发送命令?(OutputStream不起作用)当我已经ssh时,如何在这个终端中执行命令?我想在远程计算机上运行本地脚本并允许用户?脚本运行时与终端交互(例如接受软件许可等)。

我正在尝试这样的事情,但它无效。

    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec("x-terminal-emulator -e ./script.sh");

1 个答案:

答案 0 :(得分:1)

理论上说这是可能的。你需要一个java库,比如JSch,通过ssh直接与终端交互,然后利用screen实用程序在你的java编程和用户之间共享一个终端屏幕

来自你的java prog:

screen -d -m -S shared
screen -rx shared
<type your installation commands>

来自远程用户:

screen -rx shared

当然,远程用户必须等到java prog初始化屏幕才能连接到它。

请注意,当您让用户interact使用屏幕时,各种各样的事情都可能出错。你的程序必须足够聪明才能处理它。