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是否有相應的内容。