求教如何在java程序中执行带有sudo的linux命令,代码如下

String command = "sudo service sshd start";
System.out.println(command);
Process pro = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(pro .getInputStream())); String msg = null;
while ((msg = br.readLine()) != null) {
System.out.println(msg);
}
pro.destroy();
System.out.println("success");
已经修改了sudoers文件,在程序中执行其他命令基本都可以了,在终端里也可以执行带有sudo的命令了,只是在java程序中不能成功执行,也得不到返回结果

是不是sudo需要密码的关系?

可以尝试设置sudo不需要密码,不过不推荐。

或者尝试下面的代码,mypassword是sudo密码,不过感觉也不是很好。。

String command = "echo mypassword | sudo -S service sshd start";

密码加密以后保存到文件中可能好些。。

追问

您好,这个问题我已经搞定了,在sudoers文件中把Default requiretty一句注释掉就可以了。再次感谢您的回答。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-05
我还真没试过在LINUX里用JAVA执行sudo命令,这里没有环境可以尝试。
如果你的java类文件是test.class
你可以试试sudo java test,不知道有没有效果呢?追问

恩恩,好的,感谢您的回答。不过我感觉还是需要提高权限的时候再提高权限执行命令比较好。这样应该会感觉更安全一点吧

相似回答