我尝试在 Linux 中从 Java 启动命令,sudo
但找不到方法。我尝试了以下方法,但是......虽然从终端它可以工作,但从我的程序的执行它却没有。
public Boolean activarServicio(){
lanzarComando();
Boolean finaly = false;
try{
if(!estado){
consola2=Terminal.lanzarComando("teamviewer --daemon enable");
//consola2=Terminal.lanzarComando("echo mipassword | sudo -S teamviewer --daemon enable");
finaly = true;
}
}catch(IOException err){
}
return finaly;
}
有谁知道如何解决这个问题?
在英语 SO 上,等效问题有两种解决方案:
第一个简单但非常不鼓励,因为它暴露了密码,如下所示:
第二个更安全的方法是使用执行您需要的任务的特定脚本进行编辑
/etc/sudoers
并visudo
授予您的用户 NOPASSWD 权限:看看这个类
Runtime
,特别是它的方法exec()
。请注意,Runtime 是一个 Singleton 类型的类,因此要使用它,您必须使用静态方法
getRuntime()
。举个例子:
它将打开我的文本编辑器。