2011-03-02 106 views
4

嗨,我是用ganymed-SSH2 Java库执行与成功的Linux工作站远程命令。执行与“命令”使用Java,Linux的shell命令,而无需输入密码要求

但现在有一个情况我需要执行命令,但这个要求我把一些密码...这样的:

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(); 

恐怕是不可能的执行需要与此库密码的命令。

有人可以给我一个解决方案或替代允许这???

Thx!

+0

这个帖子的标题是有点误导 - 这听起来像您在使用SSH密码的问题,但你实际上有SSH会话中的密码问题。考虑在主题和/或标签中添加诸如“远程sudo密码输入”之类的内容。 – kojiro 2011-03-02 14:29:43

回答

2

假设有一个sess.getStdin(),你应该能够在管密码sudo命令。

0

最简单的事情可能是使用 public key authentication。这样你就不需要密码。

编辑:我误导了这个问题是关于SSH,实际上它是关于sudo。在这种情况下,小二的解决方案是正确的:编辑/etc/sudoers文件,使用NOPASSWD标志。

1

最简单的解决方案是给用户Java程序登录为能够在不输入密码的情况下运行sudo命令。您可以通过在主机上运行visudo并在给定命令后输入NOPASSWD来完成此操作。有关更多详细信息,请参阅man 8 visudo