2011-10-02 60 views
1

我必須在這裏丟失一些東西,但是如何用Ganymed SSH API調用類似「cd/root/some/dir /」的東西?如何使用Ganymed SSH API更改目錄(cd)?

  1. 我創建了一個Connection對象

  2. 在創建所述第一會話,我稱爲 「CD /根/一些/ DIR」

  3. 在創建第二會話,我稱爲「LS。 「或「./myApp」

沒有工作,因爲ganymed可能開始有自己的目錄中的每個會話

所以我需要在同一個會話中執行這兩個命令?像這樣:

session.getStdin().write("cd /root/somedir \n".getBytes()); 
session.getStdin().write("ls . ".getBytes()); 

這是正確的方法?如果是這樣,爲什麼我們需要Session.execCommand

+0

我從來沒有使用這個特定的庫,但你嘗試獲得STDIN一次,它存儲到變量,然後 用它? – AlexR

回答

0

好的,我快速瀏覽了Ganymed javadoc,儘管我自己沒有嘗試過,但我認爲您應該使用會話的方法execCommand()而不是寫入STDIN。我敢肯定,會話連接到遠程shell,因此處理包括當前目錄,環境變量等殼狀態

所以,只要做到以下幾點:

我希望這會爲你工作。祝你好運。

+0

亞歷克斯,恐怕沒有解決這個問題的解決方案......我已經經歷了數週的API ... 你所建議的代碼甚至不會編譯,並修復後,將失敗的Ganymed SSH的基本概念 –

1

做一些研究,只有很好地解決我設法找到被調用相同的代碼中的「CD」命令爲「LS」命令,這樣

session.execCommand("cd /root/somedir ; ls ."); 

後分號將兩者分開命令和任何bash代碼一樣。

通過這種方式,您可以查詢會議的結果,無論是cdls命令,這是更好然後兩個命令寫入session.getStdIn()的[session.getExitStatus()](後寫入標準輸入,你還挺寬鬆的所有能力檢查退出狀態...)

希望這將有助於其他

的Eyal