我试图在我的应用和操作系统之间编写完整的对话框。正常的命令可能如下所示:
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
的输入?
答案 0 :(得分:0)
如果密码是在命令行上传递的,那么您在创建流程时会将其传入。因此,例如,您不会传递一个简单的字符串,如"ls"
,而是将一个字符串数组传递给Runtime对象(请注意,您应该优先使用ProcessBuilder来获取您的进程,而不是{{ 1}})。
如果在创建Process之后需要将密码传递给命令行 ,则可以使用Process的OutputStream传入此数据。这样做时要小心线程。
注意,我不熟悉Linux或使用Runtime#exec(...)
命令,因此我将其作为社区维基回答,以便其他人可以直接纠正此处可能存在的任何错误,或发布如果需要,可以给出更好的答案。