当前位置: 首页 > 面试题库 >

如何在Java中以sudo权限执行bash命令?

林念
2023-03-14
问题内容

我正在使用ProcessBuilder执行bash命令:

import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            Process pb = new ProcessBuilder("gedit").start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

但我想做这样的事情:

Process pb = new ProcessBuilder("sudo", "gedit").start();

如何将超级用户密码传递给bash?

("gksudo", "gedit") 不会解决这个问题,因为它是从Ubuntu 13.04开始删除的,我需要使用默认命令来执行此操作。

编辑

gksudo在最近的更新中回到了Ubuntu 13.04。


问题答案:

我想您可以使用它,但是我有点犹豫要发布它。所以我只想说:

使用此方法后果自负,不建议您使用,请勿起诉我,等等。

public static void main(String[] args) throws IOException {

    String[] cmd = {"/bin/bash","-c","echo password| sudo -S ls"};
    Process pb = Runtime.getRuntime().exec(cmd);

    String line;
    BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream()));
    while ((line = input.readLine()) != null) {
        System.out.println(line);
    }
    input.close();
}


 类似资料:
  • 我正在使用ProcessBuilder执行bash命令: 编辑 gksudo带着最后一次更新回到了Ubuntu13.04。

  • 问题内容: 自寻找以来已经有一段时间了,但找不到解决方案。我试图在.jar文件中的Linux上执行bash命令。为此,我尝试了很多事情,包括: 因此,当我单击.jar文件时,我希望程序打开bash并执行命令(java -jar …),以执行程序的另一部分。 关于如何做的任何想法? 问题答案: 要了解这一点,您首先需要了解如何在shell提示符下运行该命令。 请注意双引号在哪里。第一个参数是。第二个

  • 我在javafx中开发应用程序,我尝试在终端中使用命令打开一个应用程序,我使用我的java代码运行命令我的命令有一些变量它有我的安装程序文件的路径,这将不总是相同的,因为随着构建的更新,文件名可能会不同。 这里有一个示例,我如何运行命令它不是我运行的确切命令,但命令格式是相同的。 这个过程没有给出任何输出,它停在那里,什么也没有发生。同样的命令,我已经尝试从终端和它的工作很好。 我已经尝试了这个链

  • 问题内容: 我如何在Java URLConnection中实现以下curl命令 提前致谢 问题答案: 使用URLConnection的派生类(即HttpURLConnection),您可以轻松地做到这一点。 对于

  • 我能够使用Jsch连接shell通道,然后我必须执行后续命令,我已经阅读了下面的帖子通过Jsch Shell执行多个命令 我已经试过了,如下所示 但是cmd1是UNIX服务器登录脚本,所以即使我用putty给出下面的命令 我无法在一个实例中执行所有三个,只有cmd1正在执行,因此也不能使用Jsch。 因为cmd1是用于登录的,所以通常我会在puty中执行cmd1,然后一旦登录到unix服务器,我就

  • 问题内容: 我正在尝试从Ruby on Rails应用程序执行以下命令: sudo服务squid3重新启动 如果我尝试使用此代码: 它不起作用,在控制台中,我看到linux要求输入密码。如何通过此命令传递密码?或其他建议… 问题答案: 您可以尝试使用sudo -S标志(如果系统上可用)(请检查人员): 这意味着密码将是清楚的,因此您可以将需要执行任务的用户添加到sudoers中(顺便说一句,这会引