最近專案需求, 因為 Karaf 有支援 SSH 連線, 所以打算寫一個簡單的 GUI 遠端控制 Karaf 進行 bundle 的安裝與移除. 於是就 google 到一個好用的 SSH 套件 JSch. 底是下官方對該套件的介紹 :
JSch is a pure Java implementation of SSH2.
JSch allows you to connect to an sshd server and use port forwarding, X11 forwarding, file transfer, etc., and you can integrate its functionality into your own Java programs. JSch is licensed under BSD style license.
範例代碼 :
接著我們將透過 JSch 套件連接 Karaf 的 SSH channel 並發送命令 "osgi:list" 來取的 Karaf 的 bundle 清單. 參考代碼如下 :
- LoginKarafTest.java :
- package john.jsch;
- import java.io.BufferedReader;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import com.jcraft.jsch.Channel;
- import com.jcraft.jsch.ChannelExec;
- import com.jcraft.jsch.JSch;
- import com.jcraft.jsch.Session;
- public class LoginKarafTest {
- public static void main(String args[])
- {
- String cmd = "osgi:list";
- try
- {
- JSch jsch=new JSch();
- String host="localhost";
- String user="karaf";
- int port = 8101;
- Session session=jsch.getSession(user, host, port);
- session.setPassword("karaf");
- session.setConfig("StrictHostKeyChecking", "no");
- session.connect(30000); // making a connection with timeout.
- Channel channel = session.openChannel("exec");
- ((ChannelExec) channel).setCommand(cmd);
- channel.connect();
- BufferedReader br = new BufferedReader(new InputStreamReader(channel.getInputStream()));
- String line = null;
- while((line=br.readLine())!=null)
- {
- System.out.printf("\t[Resp] %s\n", line);
- }
- channel.disconnect();
- session.disconnect();
- }
- catch(Exception e){
- e.printStackTrace();
- }
- }
- }
執行結果可能如下 :
補充說明 :
* JSch online API
* JSch example list
沒有留言:
張貼留言