原文:http://kongcodecenter.iteye.com/blog/1231177
Java通過SSH2協議執行遠程Shell腳本(ganymed-ssh2-build210.jar)
使用步驟如下:
1.導包
官網下載:
http://www.ganymed.ethz.ch/ssh2/
maven坐標:
<dependency>
<groupId>com.ganymed.ssh2</groupId>
<artifactId>ganymed-ssh2-build</artifactId>
<version>210</version>
</dependency>
2.apI說明
1. 首先構造一個連接器,傳入一個需要登陸的ip地址
Connection conn = new Connection(hostname);
2. 模擬登陸目的服務器 傳入用戶名和密碼 ,
boolean isAuthenticated = conn.authenticateWithPassword(username, password);它會返回一個布爾值,true 代表成功登陸目的服務器,否則登陸失敗
3. 打開一個session,有點象Hibernate的session ,執行你需要的linux 腳本命令 。
Session sess = conn.openSession();
sess.execCommand("last");
4. 接收目標服務器上的控制台返回結果,讀取br中的內容
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
5.得到腳本運行成功與否的標志 :0-成功 非0-失敗
System.out.println("ExitCode: " + sess.getExitStatus());
6.關閉session和connection
sess.close();
conn.close();
備注:
1.通過第2步認證成功后,當前目錄就位於/home/username/目錄之下,你可以指定腳本文件所在的絕對路徑,或者通過cd導航到腳本文件所在的目錄,然后傳遞執行腳本所需要的參數,完成腳本調用執行。
2.執行腳本以后,可以獲取腳本執行的結果文本,需要對這些文本進行正確編碼后返回給客戶端,避免亂碼產生。
3.如果你需要執行多個linux控制台腳本,比如第一個腳本的返回結果是第二個腳本的入參,你必須打開多個Session,也就是多次調用
Session sess = conn.openSession();,使用完畢記得關閉就可以了
3.實例代碼,這個類可以直接拷貝過去用