2011-03-02 61 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