【发布时间】:2018-08-29 13:59:50
【问题描述】:
我正在尝试使用 java 1.8 和 OS Solaris 11 运行一个简单的命令。 我的程序在特定用户下运行,命令必须在 SuperUser 下运行
命令如下:
Runtime.getRuntime().exec("su - root -c 'pargs -l 1111'");
如果我运行命令,它应该可以正常工作并要求输入密码,然后我输入密码,我会得到结果。
问题是我在 java 中运行它 这是我的代码
Process proc = Runtime.getRuntime().exec("su - root -c 'pargs -l 1111'");
PrintWriter out = new PrintWriter(new OutputStreamWriter(proc.getOutputStream()));
out.println(password);
out.flush();
int exitCode= proc.waitFor();
System.out.println(exitCode);//exitCode = 1
BufferedReader pArgs= new BufferedReader( new InputStreamReader(proc.getInputStream()));
if((line=pArgs.readLine()) != null)
{
//do something
}
else
{
//something not working = ERROR
}
我认为该行等于 null,因为密码集中的某些内容不正确 bat 我不确定
我做错了什么?
【问题讨论】:
-
Java 具有检查进程的能力:
Optional<String[]> processArgs = ProcessHandle.of(1111).info().arguments();即使没有 root 权限,您也可以执行此操作,具体取决于进程的所有者。
标签: java sh solaris runtime.exec