响应进程对话框

时间:2015-12-04 16:59:05

标签: java linux

我试图在我的应用和操作系统之间编写完整的对话框。正常的命令可能如下所示:

        try {
            Process process = Runtime.getRuntime().exec("ls");
            process.waitFor();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = bufferedReader.readLine();
            while (line != null) {
                line = bufferedReader.readLine();
            }
            System.out.println(line);
        } catch (IOException | InterruptedException ex) {

        }

这使操作系统输出运行ls命令。

但是,我们要说我们要运行ssh root@myserver,这需要password的额外输入,我们如何预先编码password的输入?

1 个答案:

答案 0 :(得分:0)

如果密码是在命令行上传递的,那么您在创建流程时会将其传入。因此,例如,您不会传递一个简单的字符串,如"ls",而是将一个字符串数组传递给Runtime对象(请注意,您应该优先使用ProcessBuilder来获取您的进程,而不是{{ 1}})。

如果在创建Process之后需要将密码传递给命令行 ,则可以使用Process的OutputStream传入此数据。这样做时要小心线程。

注意,我不熟悉Linux或使用Runtime#exec(...)命令,因此我将其作为社区维基回答,以便其他人可以直接纠正此处可能存在的任何错误,或发布如果需要,可以给出更好的答案。