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

使用Java使用“ sudo”执行linux shell命令,而无需输入所需的密码

宋琛
2023-03-14
问题内容

嗨,我正在使用ganymed-ssh2 Java库在Linux工作站中成功执行远程命令。

但是现在有一种情况,我需要执行命令,但这需要我输入一些密码…,例如:

sudo /usr/bin/some_process
please enter your password:

我曾经以这种方式实现远程cmd执行:

Session sess = conn.openSession();

sess.execCommand("uname -a && date && uptime && who");

System.out.println("Here is some information about the remote host:");

InputStream stdout = new StreamGobbler(sess.getStdout());

BufferedReader br = new BufferedReader(new InputStreamReader(stdout));

while (true)
{
  String line = br.readLine();
  if (line == null)
  break;
  System.out.println(line);
}


System.out.println("ExitCode: " + sess.getExitStatus());

sess.close();

conn.close();

恐怕无法使用此库执行需要密码的命令。

有人可以给我解决方案或替代方案,以允许这样做?

谢谢!


问题答案:

假设有一个sess.getStdin(),您应该能够将密码输入sudo命令。



 类似资料:
  • 问题内容: 我想从Go执行perforce命令行“ p4”以执行登录工作。“ p4登录”要求用户输入密码。 如何在Go中运行需要用户输入的程序? 以下代码不起作用。 问题答案: 从os / exec.Command文档: 在执行命令之前,设置命令的Stdin字段。

  • 本文向大家介绍使用docker命令不需要敲sudo的操作,包括了使用docker命令不需要敲sudo的操作的使用技巧和注意事项,需要的朋友参考一下 由于docker daemon需要绑定到主机的Unix socket而不是普通的TCP端口,而Unix socket的属主为root用户,所以其他用户只有在命令前添加sudo选项才能执行相关操作。 如果不想每次使用docker命令的时候还要额外的敲一下

  • 问题内容: 我需要使用Java以root和sudo用户身份执行给定命令。但是,我不确定我可以用来传递密码的方法。有什么方法可以将密码传递给终端? 问题答案: 您可以将sodu全部放在一起,并创建一个shell脚本suid root,然后运行它。 每当调用该脚本时,它将以root身份运行。

  • 有人能给我提示如何处理这种情况吗?我使用的是Ansible2.0,数据库只能从特定的远程主机访问。 谢谢

  • 问题内容: 我想在node.js代码中创建并运行grunt任务以供测试使用。 但这是行不通的。Grunt似乎没有执行任何任务。我几乎可以肯定,有一些API可以在没有命令行的情况下在外部运行grunt任务,但是不知道该怎么做。 有什么办法吗? 问题答案: 您可以。我不知道为什么任何人都需要做这个,因为目前Grunt是一个 命令行工具 。 警告:我不建议以这种方式运行Grunt。 但是这里是:

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