String sudoScript = "sudo -u root -S ls /"; String script = "ls /"; try { System.out.println("==================================="); System.out.println("command="+sudoScript); Process p1 = Runtime.getRuntime().exec(sudoScript); System.out.println("p2.waitFor()="+p1.waitFor()); BufferedReader stdInput1 = new BufferedReader(new InputStreamReader(p1.getInputStream())); while ((sudoScript = stdInput1.readLine()) != null) { System.out.println(script); } System.out.println("==================================="); System.out.println("command="+script); Process p2 = Runtime.getRuntime().exec(script); System.out.println("p2.waitFor()="+p2.waitFor()); BufferedReader stdInput2 = new BufferedReader(new InputStreamReader(p2.getInputStream())); while ((script = stdInput2.readLine()) != null) { System.out.println(script); } } catch (Exception e) { e.printstacktrace(); }
这是我得到的那种输出 –
=================================== command=sudo -u root -S ls / p2.waitFor()=1 =================================== command=ls / p2.waitFor()=0 bin boot cgroup data dev etc home home.save lib lost+found media mnt null opt opt.save proc root sbin selinux srv sys tmp usr var
如果你观察,我不能使用sudo命令获得相同的输出。 我在这里错过了什么吗?
如何使用batch file作为Java控制台?
microsoft / nanoserver泊坞窗图像无法启动java.exe,而microsoft / windowsservercore成功
什么是我可以从System.nanoTime合理期望的最差的分辨率?
在我的Swing GUI中embeddedvideo的简单方法
使用Runtime.exec“Program Files”的正确语法
窗口焦点JNA Windows操作系统的GetmodulefileName
问题安装OpenNLP
Android SDK突然停止工作
Java TrayIcon.displayMessage()在Windows XP上不起作用
如何从Java EE Web应用程序运行外部应用程序?
现在大多数发行版都配置了sudo来要求执行tty。
尝试(在/ etc / sudoers中):
Defaults requiretty
要么
Defaults!/path/to/program !requiretty
您需要确保sudo不需要该用户的特定命令的密码(例如ls / ),或者您需要将其提供给sudo 。
更新:顺便说一句,阅读stderr是一个好主意,所以我们不必猜测命令执行有什么问题
你应该可以输入密码sudo命令。
命令sudo -u root -S ls /提示输入用户密码。
像echo '[password]' | sudo -u root -S ls / echo '[password]' | sudo -u root -S ls /可能会诀窍。
注意:这需要对密码进行硬编码。 这可能不是最好的主意。
编辑:根据man sudo , -u root选项是不必要的。 运行sudo -S ls /将具有相同的效果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。