2011-06-01 68 views
5

我目前在Java中使用SSH庫,但它似乎缺乏執行多部分命令的能力(例如,如果我做passwd user我沒有辦法然後輸入密碼兩次以更改它,因爲它使您每次輸入命令時開始一個新的會話)。我真的需要這個功能,用於當前我正在開發的應用程序,似乎有很多適用於Java的SSH庫,但我不確定哪些應用程序允許這樣做,因爲有些看起來不像。用於交互式SSH會話的Java庫(能夠執行多部分命令)?

任何建議在一個好的圖書館看這個將不勝感激。

要密切巡視:如果你要試圖關閉這一點,至少舉,詢問同樣的問題我的,不只是一般的線程「什麼一個好的Java SSH文庫」問題

+0

[對Java SSH庫]的可能重複(http://stackoverflow.com/questions/995944/ssh-library-for-java) – 2011-06-01 01:36:25

+2

感謝試圖援引一個關閉我的線程是不同樣的,但請閱讀你引用的線程,你會看到它沒有指定相同的參數,我知道那個線程,它沒有t問我的具體問題 – Rick 2011-06-01 02:14:13

回答

2

我使用Ganymede SSH-2庫取得了巨大成功。但是密碼提示不應該出現在應用程序中,它應該是連接建立協商的一部分。

+0

謝謝我會看看Ganymede(Ganymed?),但我認爲你誤讀了我所說的,這是一個示例命令,我嘗試使用'passwd user'來更改用戶的密碼,而不是輸入密碼連接 – Rick 2011-06-01 00:59:10

+1

爲ref:http://www.cleondris.ch/opensource/ssh2/,因爲我找到項目的主頁有點麻煩 – Rick 2011-06-01 01:04:44

+0

@Rick好吧,我明白了。祝你好運。 – EJP 2011-06-01 01:07:48

0

你可以運行像「passwd中用戶」交互式命令使用

session.getStdin().write() refer following snipped 
connection = new Connection(host,port); 
      connection.connect(); 
      // Authenticate 
    boolean result = connection.authenticateWithPassword(username, password); 
Session session = connection.openSession(); 
session.requestPTY("bash"); 
session.execCommand("passwd testuser"); 
session.getStdin().write("newPassword\n".getBytes()); // //for new password 
session.getStdin().write("newPassword\n".getBytes()); //for retype new password 

System.out.println("ExitCode: " + session.getExitStatus()); 
session.close(); 
connection.close();