ganymed-ssh2

2024-02-04 21:58
文章标签 ssh2 ganymed

本文主要是介绍ganymed-ssh2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 的使用,非常简单:

 

这篇关于ganymed-ssh2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678910

相关文章

Ganymed实现基本的自动化部署API

Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细看一下FAQ,真的能避免很多很多问题 在google上找到的ganymed-ssh2的官网是http://www.ganymed.ethz.ch/ssh2/,进去看官网的英文简介可以看到该网站已经

SSH2框架搭建Jar下载地址

注意啦! SSH2框架搭建Jar下载地址:http://download.csdn.net/detail/u010870518/7997945 没有积分的请回复邮箱!一定发给你们!

SSH2单元测试的文件配置要点

一、Spring中Bean的命名 1、每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一; 2、可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean> 此时需要通过接口getBean(Class<T> required

ssh2常用annotation

Spring annotation: @Service用于标注业务层组件, @Controller用于标注控制层组件(如struts中的action), @Repository用于标注数据访问组件,即DAO组件, @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 @Autowired后不需要getter()和setter()

Linux下PHP安装ssh2扩展

新部署了一套服务器,在手动执行队列任务的时候,出现如下错误: PHP Startup: Unable to load dynamic library 'ssh2.so' 顾名思义:缺少ssh2扩展,好开始安装! 1.编译安装 libssh2 # cd /usr/local/src# wget http://www.libssh2.org/download/libssh2-1.4.2.

浅谈springboot整合ganymed-ssh2远程访问linux

环境介绍 技术栈 springboot+mybatis-plus+mysql+ganymed-ssh2 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon)

浅谈springboot整合ganymed-ssh2远程访问linux

环境介绍 技术栈 springboot+mybatis-plus+mysql+ganymed-ssh2 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon)

Java通过SSH2协议运行远程程序

我使用Ganymed库,访问http://www.ganymed.ethz.ch/ssh2/网页,下载最新版本的程序,解压后,在NetBeans下如下设置。 然后在我们的Java应用程序中,加入Ganymed-ssh2-build2库。 假定我在192.168.0.110的UBuntu Server 9.04系统的/home/chenshu目录下放了一个文件夹test

java贵美商城_JAVAWEB贵美网上商城完整项目源码(SSH2)

贵美网上商城原是北大青鸟的一个内部项目,项目采用 struts2+spring4+hibernate4+MySQL等技术实现,数据库连接池采用c3p0的方式。 贵美商城包括前后台。 前台采用绚丽的jquer+jquery.validate实现效果显示,实现注册登录 浏览商品详情 加入购物车等功能。 后台采用easyui实现管理员登录 对注册人员 商品 订单 公告等的增删改查。 当然这个对于工作一

Putty上传文件报Received SSH2_MSG_CHANNEL_DATA for nonexistent channel 0

生产服务器通过Putty上传jar包报错信息如下: 排查发现出现原因是上传目录磁盘空间满了 解决办法:进入磁盘空间满的目录,执行du -a|sort -rn|head -10,对磁盘空间进行清理,注意不要删除data目录的数据,尽量找log目录删除不要的日志文件