2012-09-02 106 views
0

我想用sshj爲android編寫一個ssh應用程序。我可以連接到服務器,並讀取從InputStream沒有問題,得到的東西,如:從sshj輸入流讀取時,如何獲得'輸入提示'?

Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0.29-generic x86_64) 

Documentation: https://help.ubuntu.com/ 

Last login: date time from user` 

通常我會期望得到用戶@主機的格式輸入提示:〜$現在,把InputStream的剛到此爲止。我可以寫入shell並執行命令而沒有任何問題,但是我非常擔心沒有得到輸入提示,因爲它知道何時寫入輸出流和適當的格式。 當我執行了提示寫入InputStream的命令,它看起來像這樣:

"executed command" 

[email protected]:~$ "executed command" 

"result"` 

我試着用的ReadLine閱讀()和read()和檢查,如果流具有可以讀取任何數據。

有沒有什麼辦法讓我從inputstream接收提示而不執行命令?

回答

1

這個問題可以通過使用如「RudimentaryPTY」示例所示StreamCopier和重定向的System.out到一個PrintStream被規避:

baos = new ByteArrayOutputStream(); 
    ps= new PrintStream(baos); 
    System.setOut(ps); 
    new StreamCopier (shell.getInputStream(),System.out).bufSize(shell.getLocalMaxPacketSize()).spawn("stdout"); 
    textView.setText(baos.toString("UTF8")); 

這個解決方案絕對不是完美的,但它的作品。對於如何更好地做到這一點,我仍然樂於提出建議!