ganymed-ssh2 for Java

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

 

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

 

 

 

 

打印结果:

 

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();,使用完毕记得关闭就可以了

 

 

 

package cn.com.xinli.ssh.test;   
import java.io.BufferedReader;   
import java.io.IOException;   
import java.io.InputStream;   
import java.io.InputStreamReader;   
  
import ch.ethz.ssh2.Connection;   
import ch.ethz.ssh2.Session;   
import ch.ethz.ssh2.StreamGobbler;   
  
public class Basic   
{   
    public static void main(String[] args)   
    {   
        String hostname = "172.100.1.64";   
        String username = "******";   
        String password = "******";   
  
  
        try  
        {   
            /* Create a connection instance */  
  
            Connection conn = new Connection(hostname);   
  
            /* Now connect */  
  
            conn.connect();   
  
            /* Authenticate.  
             * If you get an IOException saying something like  
             * "Authentication method password not supported by the server at this stage."  
             * then please check the FAQ.  
             */  
  
            boolean isAuthenticated = conn.authenticateWithPassword(username, password);   
  
            if (isAuthenticated == false)   
                throw new IOException("Authentication failed.");   
  
            /* Create a session */  
  
            Session sess = conn.openSession();   
  
            sess.execCommand("last");   
  
            System.out.println("Here is some information about the remote host:");   
  
            /*   
             * This basic example does not handle stderr, which is sometimes dangerous  
             * (please read the FAQ).  
             */  
  
            InputStream stdout = new StreamGobbler(sess.getStdout());   
  
            BufferedReader br = new BufferedReader(new InputStreamReader(stdout));   
  
            while (true)   
            {   
                String line = br.readLine();   
                if (line == null)   
                    break;   
                System.out.println(line);   
            }   
  
            /* Show exit status, if available (otherwise "null") */  
               
            /**  
             * 0 成功  
             * 1 失败  
             */  
               
            System.out.println("ExitCode: " + sess.getExitStatus());   
  
            /* Close this session */  
  
            sess.close();   
  
            /* Close the connection */  
  
            conn.close();   
  
        }   
        catch (IOException e)   
        {   
            e.printStackTrace(System.err);   
            System.exit(2);   
        }   
    }   
}  

 

  

 

你可能感兴趣的:(java,linux,Hibernate,脚本,ssh)