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,有点象Hibernate的session ,执行你需要的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.关闭session和connection
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);
- }
- }
- }
下面我们重点介绍一下ganymed-ssh2 的使用,非常简单:
- ganymed-ssh2
- ganymed-ssh2简介
- ch.ethz.ganymed包ganymed-ssh2的使用
- ganymed-ssh2实现java ssh协议采集
- ganymed-ssh2实现java ssh协议采集
- java使用ganymed-ssh2执行linux命令
- ganymed-ssh2-build210.jar 的使用
- SSH2对于Java的轻量级实现方案-ganymed
- ganymed-ssh2-build250使用中遇到的问题
- ganymed-ssh2执行命令返回结果乱码的问题解决
- 使用ganymed ssh2实现scp以及ssh内容访问
- Ganymed SSH2 模拟putty远程交互式执行命令工具
- java使用ganymed-ssh2-build210.jar实现linuxscp命令。
- 使用ganymed-ssh2调用自己配置的命令
- Ganymed ssh2 连接ftp server获取server的file
- Ganymed SSH-2 for Java系列1之 ganymed-ssh2介绍
- Ganymed SSH-2 for Java系列1之 ganymed-ssh2介绍
- Ganymed SSH-2 for Java系列1之 ganymed-ssh2介绍
- DB2/z DCLGEN/SPUFI -805 的解决
- VB 实现 创建拨号连接,并进行拨号,断开拨号操作
- jquery autocomplete 的一些改动 json格式的一些转化
- ubuntu设置命令行显示路径
- ASP.NET抽象类和接口的比较
- ganymed-ssh2
- __int64 类型(VC中)与long long 型(gcc中,C99标准)
- 图像旋转 System.Drawing.RotateFlipType 枚举
- SSH2对于Java的轻量级实现方案-ganymed
- BIOS系统概述
- 几种渲染算法简介
- AHK~与$的含义
- poj2503——Babelfish
- Vi 中文乱码