天天看點

JSch基本使用

JSch 是SSH2的一個純Java實作。它允許你連接配接到一個sshd 伺服器,使用端口轉發,X11轉發,檔案傳輸等等。你可以将它的功能內建到你自己的 程式中。同時該項目也提供一個J2ME版本用來在手機上直連SSHD伺服器。

本文采用的linux作業系統是CentOS6.5.

TIPS: 檢視Linux作業系統(核心)版本可以使用:uname -a; uname -r; cat /etc/issue; cat /etc/redhat-release等指令。

第一個例子:采用Java模拟shell操作。

這裡涉及到幾個參數,會在下面的代碼中有所展現:

USER:所連接配接的Linux主機登入時的使用者名

PASSWORD:登入密碼

HOST:主機位址

DEFAULT_SSH_PROT=端口号,預設為22

運作結果:

輸入ls檢視:

這樣就和在原linux系統中一樣使用shell功能了。

如果需要跳過如下的檢測:

隻需要在程式中加入相應的代碼:

第二個例子:運作一條shell指令,這裡就那“ls”做例子好了。

No more talk, show you the code:

第二個例子相比于第一個例子來說将UserInfo采用static class的方式提取出來,這樣更直覺一點。

JSch是以多線程方式一下,是以代碼在connect後如果不disconnect channel和session,以及相關stream, 程式會一直等待,直到關閉。

需要注意的一個問題,相關的Stream和Channel是一定要關閉的,那麼應該在什麼時候來關?執行connect後,JSch接受用戶端結果需要一定的時間(以秒計),如果馬上關閉session就會發現什麼都沒接受到或内容不全。

還有一點注意,使用shell時,看到執行後沒有結果,解決辦法是在指令行後加上”\n”字元,server端就認為是一條完整的指令了。

最後将第一個和第二個例子合并,并提取一些公用子產品,以便更好的了解和使用:

測試代碼:

測試結果:

還有解釋檢視一下左邊是否有個shell.txt以及shell.txt是否有相應的内容。

繼續閱讀