使用“执行linux shell命令”;sudo“;使用java,无需输入所需密码
您好,我正在使用ganymed-ssh2 java库在linux工作站上成功地执行远程命令 但现在有一种情况,我需要执行一个命令,但这需要我输入一些密码…比如:使用“执行linux shell命令”;sudo“;使用java,无需输入所需密码,java,passwords,cmd,sudo,Java,Passwords,Cmd,Sudo,您好,我正在使用ganymed-ssh2 java库在linux工作站上成功地执行远程命令 但现在有一种情况,我需要执行一个命令,但这需要我输入一些密码…比如: sudo /usr/bin/some_process please enter your password: 我曾经以这种方式实现远程cmd执行: Session sess = conn.openSession(); sess.execCommand("uname -a && date && up
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();
恐怕无法使用此库执行需要密码的命令
有人可以给我一个解决方案或替代方案来允许这个
谢谢 最简单的方法可能就是使用。这样你就不需要密码了
编辑:我被误导了,以为这个问题是关于SSH的,而实际上是关于sudo的。在这种情况下,kojiro的解决方案是正确的:编辑
/etc/sudoers
文件,使用NOPASSWD
标志。最简单的解决方案是让Java程序登录的用户能够在不输入密码的情况下运行sudo命令。您可以通过在主机上运行visudo并在给定命令后输入NOPASSWD来实现这一点。有关更多详细信息,请参见man 8 visudo
。假设存在sess.getStdin()
,您应该能够通过管道向sudo命令输入密码。本文的标题有点误导性——听起来您在ssh中遇到了密码问题,但实际上在ssh会话中遇到了密码问题。考虑在主题和/或标签中添加类似“远程SUDO密码条目”之类的内容。