ganymed-ssh2

来源:互联网 发布:python的from import 编辑:程序博客网 时间:2024/05/17 03:30

ganymed-ssh2简介:

 

 

Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些都没有依赖任何JCE provider,而且所有这些都包含加密的功能。

 

下载地址:

http://www.ganymed.ethz.ch/ssh2/

 

使用方法:

ganymed-ssh2-build210.jar 加入到项目的lib

 

 

 

 

 

打印结果:

 

Here is some information about the remote host:

root     pts/1        133.64.37.208    Sun May  3 13:16 - 13:19  (00:03)   

 

wtmp begins Sun May  3 13:16:08 2009

ExitCode: 0 

 

 总结使用步骤:

 

1.  首先构造一个连接器,传入一个需要登陆的ip地址

Connection conn = new Connection(hostname);

2.  模拟登陆目的服务器 传入用户名和密码

boolean isAuthenticated = conn.authenticateWithPassword(username, password);它会返回一个布尔值,true 代表成功登陆目的服务器,否则登陆失败

3.  打开一个session,有点象Hibernatesession ,执行你需要的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.关闭sessionconnection

 sess.close();

 conn.close();

 

 

注意的地方:如果你需要执行多个linux控制台脚本,比如第一个脚本的返回结果是第二个脚本的入参,你必须打开多个Session,也就是多次调用

Session sess = conn.openSession();,使用完毕记得关闭就可以了

 

 

 

Java代码 复制代码
  1. package cn.com.xinli.ssh.test;      
  2. import java.io.BufferedReader;      
  3. import java.io.IOException;      
  4. import java.io.InputStream;      
  5. import java.io.InputStreamReader;      
  6.      
  7. import ch.ethz.ssh2.Connection;      
  8. import ch.ethz.ssh2.Session;      
  9. import ch.ethz.ssh2.StreamGobbler;      
  10.      
  11. public class Basic      
  12. {      
  13.     public static void main(String[] args)      
  14.     {      
  15.         String hostname = "172.100.1.64";      
  16.         String username = "******";      
  17.         String password = "******";      
  18.      
  19.      
  20.         try     
  21.         {      
  22.             /* Create a connection instance */     
  23.      
  24.             Connection conn = new Connection(hostname);      
  25.      
  26.             /* Now connect */     
  27.      
  28.             conn.connect();      
  29.      
  30.             /* Authenticate.    
  31.              * If you get an IOException saying something like    
  32.              * "Authentication method password not supported by the server at this stage."    
  33.              * then please check the FAQ.    
  34.              */     
  35.      
  36.             boolean isAuthenticated = conn.authenticateWithPassword(username, password);      
  37.      
  38.             if (isAuthenticated == false)      
  39.                 throw new IOException("Authentication failed.");      
  40.      
  41.             /* Create a session */     
  42.      
  43.             Session sess = conn.openSession();      
  44.      
  45.             sess.execCommand("last");      
  46.      
  47.             System.out.println("Here is some information about the remote host:");      
  48.      
  49.             /*     
  50.              * This basic example does not handle stderr, which is sometimes dangerous    
  51.              * (please read the FAQ).    
  52.              */     
  53.      
  54.             InputStream stdout = new StreamGobbler(sess.getStdout());      
  55.      
  56.             BufferedReader br = new BufferedReader(new InputStreamReader(stdout));      
  57.      
  58.             while (true)      
  59.             {      
  60.                 String line = br.readLine();      
  61.                 if (line == null)      
  62.                     break;      
  63.                 System.out.println(line);      
  64.             }      
  65.      
  66.             /* Show exit status, if available (otherwise "null") */     
  67.                   
  68.             /**    
  69.              * 0 成功    
  70.              * 1 失败    
  71.              */     
  72.                   
  73.             System.out.println("ExitCode: " + sess.getExitStatus());      
  74.      
  75.             /* Close this session */     
  76.      
  77.             sess.close();      
  78.      
  79.             /* Close the connection */     
  80.      
  81.             conn.close();      
  82.      
  83.         }      
  84.         catch (IOException e)      
  85.         {      
  86.             e.printStackTrace(System.err);      
  87.             System.exit(2);      
  88.         }      
  89.     }      
  90. }    

下面我们重点介绍一下ganymed-ssh2 的使用,非常简单:

 

原创粉丝点击