最近做测试的自动化实现,需要实现在windows环境下通过跳板机登陆到测试机,运行测试机上某个shell脚本的功能,看了以前的一些参考代码,采用的是Runtime.exec("\"C:\\Program Files\\SecureCRT\\vsh.exe \" -pw 密码 ***@***  sh  **.sh")这样的方式来实现的,后来试用了一下,发现通过跳板机到达测试机能实现,但是中间有点辗转,而且,登陆到测试机上以后执行shell脚本结果时好时坏,由于不太熟悉,个人觉得应该是流没有控制好,或者是线程之类的原因。于是寻找到另外一种方法来实现相同的功能,引入ganymed-ssh2-build210.jar。

Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。在使用它的过程中非常容易,只需要指定合法的用户名口令,或者授权认证文件,就可以创建到远程 Linux主机的连接,在建立起来的会话中调用该Linux主机上的脚本文件,执行相关操作。
使用方法:
    在pom.xml中加入配置:

<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>build210</version>
</dependency>

使用实例:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class GanymedTest {
public static void main(String[] args) {
try {
Connection conn = new Connection("测试机IP");
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword("username",
"password");
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
Session sess = conn.openSession();
sess.execCommand("ls \n  ");
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);
}
sess.close();
conn.close();
} catch (IOException e) {
e.printStackTrace(System.err);
System.exit(2);
}
}
}

这样即可直接通过用户名和密码直接登陆到测试机上,进行相关操作,不会出现线程、阻塞等引起的执行结果时好时坏的情况。

转自:http://testing.etao.com/node/421

ch.ethz.ganymed包ganymed-ssh2的使用相关推荐

  1. Ganymed SSH-2(ch.ethz.ssh2)

    一.简介 Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包.在使用它的过程中非常容易,只需要指定合法的用户名口令,或者授权认证文件,就可以创建到远程Linux主机的 ...

  2. ch.ethz.ssh2.Session和com.jcraft.jsch.Session

    通过Jsch连接 step 1引入jar包 <!-- jcraft包 -->         <dependency>             <groupId>c ...

  3. 扫描程序卡住-资源的打开与释放(ch.ethz.ssh2.SFTPv3Client)

    在用ch.ethz.ganymed:ganymed-ssh2:build210做一个远程文件扫描组件时,先用ssh协议连上远程主机,然后利用sftp协议操作文件(ch.ethz.ssh2.SFTPv3 ...

  4. ganymed ssh-2 for java,用于java连接问题的Ganymed SSH(Ganymed SSH for java connect issue)

    用于java连接问题的Ganymed SSH(Ganymed SSH for java connect issue) 我们正在使用Ganymed-SSH库并在与另一台机器进行SSH时遇到此错误. [r ...

  5. 使用ganymed工具调用ssh2

    需要引入ganymed-ssh2-build210.jar包. 其实很简单.所以直接贴代码,代码说话. package com.eshore.framework.util;import java.io ...

  6. Java中ch.ethz.ssh2.Connection对象的使用

    在项目中,后端开发中有时候需要获得一些远程服务器的数据进行业务处理,遇到这种情况,很容易联想到和数据库类似,通过连接对象远程连接服务器,通过调用服务器上的Shell脚本或执行命令来获取我们所需要的数据 ...

  7. 多线程调用ch.ethz.ssh2.Connection执行shell任务时有的执行丢失情况解决

    最近项目出现一个问题,在使用多线程调用开源ch.ethz.ssh2.Connection执行shell任务时有的任务没有执行,导致没有获取数据. 后来经过定位发现线程池同时间最大运行数设置的是15,而 ...

  8. ch.ethz.ssh2._MindTerm SSH客户端3.4版已发布

    ch.ethz.ssh2. Cryptzone已宣布发布MindTerm 3.4. MindTerm是基于Java的SSH客户端,可实现SSH1和SSH2协议. 它具有对隧道和代理遍历以及基于GUI的 ...

  9. Ch支持java不,ch.hsr.geohash包使用

    ch.hsr.geohash 是开源项目,可以让你在java项目中方便的进行经纬度的geohash相关计算,如果您对geohash比较陌生,可以看之前的geohash的简明介绍文章. 本文涉及到点 c ...

最新文章

  1. C#程序出现内存溢出错误的解决办法
  2. 【论文解读】多视图多示例多标签的协同矩阵分解
  3. CentOS下Apache环境支持GBK编码解决网页乱码问题
  4. 预训练模型真的越大越好吗?听听他们怎么说
  5. 二维动态数组定义及二维静态数组与**P的区别
  6. 【ArcGIS风暴】ArcGIS生成GlobeLand30土地利用数据集中国区域行列号shp格式对照图(附shp下载)
  7. java set spliterator_Java HashSet spliterator() 方法
  8. 51nod-猴猴吃苹果【线段树】
  9. UVALive 6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)
  10. 基于顺序存储结构的图书信息表的旧图书的出库(C++)
  11. Google Chrome 调试JS简单教程[更新]
  12. Javascript堆排序
  13. dva处理_dva中使用store管理数据的异步问题
  14. Linux内存管理 (3)内核内存的布局图
  15. 关于消灭冲击波的蠕虫
  16. ShuffleNet
  17. 电工知识:3种方法测电容的好坏,万用表三个档位的巧妙应用
  18. Windows系统连接蓝牙音箱,已连接,没有声音
  19. NO.83 常用二维码对比(QR、PDF417、DM、汉信码)
  20. Flask项目之手机端租房网站的实战开发(一)

热门文章

  1. shell字符串,字符数组,遍历
  2. Jsp程序设计-数据库练习题(二)
  3. 2020计算机专业保研夏令营面经:北航计算机
  4. Linux部署lamp(centos 7),照做就行
  5. 如何导入阿里巴巴字体图标
  6. SQL Server日期时间字符串的处理和转换
  7. onsubmit和submit()详解
  8. HorizontalScrollView 自动滑动
  9. 【Linux】之systemd与systemctl
  10. Linux--网络命令大全--使用