gpt4 book ai didi

java - 如何通过 runtime.exec() 在 java 中传递用户和密码

转载 作者:行者123 更新时间:2023-12-04 10:50:43 25 4
gpt4 key购买 nike

我正在尝试使用 java 1.8 和操作系统 Solaris 11 运行一个简单的命令。我的程序在特定用户下运行,命令必须在 super 用户下运行

命令如下:

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 因为密码集中的某些内容不正确,我不确定

我做错了什么?

最佳答案

我可能会提出一个完全不同的方法来解决这个问题。与其尝试运行动态要求输入密码的 shell 命令,不如让命令不需要密码。

如果它只是要求输入密码,因为它需要 root,您可以在 root 下的 sudoers 文件中添加一行,说明您的程序用户可以像 root 一样执行该特定命令:https://www.linux.com/blog/configuring-linux-sudoers-file .

这也会更安全,因为您不会让密码在代码中 float 。

关于java - 如何通过 runtime.exec() 在 java 中传递用户和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com