`
ynztpwl
  • 浏览: 59572 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用Ganymed SSH-2模拟SSH操作

 
阅读更多

官方地址:http://www.cleondris.ch/opensource/ssh2/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.junit.Test;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class TestSSH{
@Test
public void testSsh() {
String hostname = "192.168.88.128";
String username = "root";
String password = "a150321927";
try {
/* Create a connection instance */
Connection conn = new Connection(hostname);// 首先构造一个连接器,传入一个需要登陆的ip地址
/* Now connect */
conn.connect();
System.out.println("connect ok");
/*
* 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.
*/
//模拟登陆目的服务器 传入用户名和密码 ,
//它会返回一个布尔值,true 代表成功登陆目的服务器,否则登陆失败
boolean isAuthenticated = conn.authenticateWithPassword(username,password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
System.out.println("Authentication ok");
/* Create a session */
Session sess = conn.openSession();
sess.execCommand("uname -a");//执行linux命令
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).
*接收目标服务器上的控制台返回结果,读取br中的内容
*/
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-成功 非0-失败*/
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);
}
}
}

运行结果:
connect ok
Authentication ok
Here is some information about the remote host:
Linux localhost.localdomain 2.6.9-78.ELsmp #1 SMP Wed Jul 9 15:39:47 EDT 2008 i686 i686 i386 GNU/Linux
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();,使用完毕记得关闭就可以了

分享到:
评论

相关推荐

    Ganymed SSH-2 for Java

    这个库的文件ganymed-ssh2-build250可能包含了编译好的JAR文件和其他相关文档,例如API文档或者示例代码,帮助开发者快速理解和使用Ganymed SSH-2库。通过集成这个库,Java开发者可以安全、高效地利用SSH-2协议与...

    Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器

    本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2 库来实现远程连接和文件传输。 描述解释 描述部分提到使用 ...

    如何利用Ganymed SSH-2模拟SSH操作

    **使用Ganymed SSH-2进行SSH操作的基本步骤** 1. **建立连接**:首先,你需要创建一个`Connection`对象,传入目标服务器的主机名。 2. **连接服务器**:使用`conn.connect()`方法建立与服务器的连接。 3. **认证**...

    ganymed-ssh2-262.jar

    标题中的“ganymed-ssh2-262.jar”是一个特定版本的SSH2库,由Ganymed项目提供,用于Java环境下的SSH(Secure Shell)连接。SSH是一种网络协议,常用于安全地远程登录到服务器、传输文件以及执行命令。Ganymed SSH2...

    ganymed-ssh2-build210

    标题“ganymed-ssh2-build210”指的是一个基于Java实现的SSH(Secure Shell)库,专门用于远程管理Linux服务器。这个库是 Ganymed SSH-2 的一个特定版本,版本号为210。SSH协议允许用户通过安全加密的通道与远程主机...

    ganymed-ssh2-263.jar

    解决openssh升级到8.2以后无法登录的问题,支持jdk1.5及以上版本

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    总之,Java结合ganymed-ssh2-build210.jar库可以实现强大的SSH远程连接功能,使开发者能够在Java应用中安全、便捷地与Linux服务器交互,执行各种远程操作。无论是简单的命令执行还是复杂的自动化脚本,这个库都能...

    ganymed-ssh2-build250.rar,jar包,源码,例子,javadoc

    再者,`ganymed-ssh2-build250-examples.jar`包含了一些示例代码,这些示例展示了如何使用Ganymed SSH2库进行基本操作,如建立SSH连接、执行远程命令、SFTP文件传输等。开发者可以通过运行这些示例快速上手,为自己...

    ssh协议依赖jar包:ganymed-ssh2-build

    SSH(Secure Shell)协议是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。...在项目中使用时,需将`ganymed-ssh2-build210.jar`添加至类路径,并根据需求调用相应的API进行操作。

    ganymed-ssh2 工具类

    ganymed-ssh2是一个开源Java库,它提供了对SSH2协议的全面支持,使得开发人员能够在Java应用程序中轻松地进行远程操作,如执行命令、传输文件等。本文将深入探讨ganymed-ssh2工具类的使用及其核心功能。 ** SSH连接...

    ganymed-ssh2-build210-sources.jar.zip

    下载网站https://repo1.maven.org/maven2/ch/ethz/ganymed/ganymed-ssh2/build210/ 此jar源码文件中包含以下这些类: SCPClient.lass Session.class Connection.clss 等许多文件传输类。 查看源码的方法: 1.把此jar...

    ganymed-ssh2-build251beta1.zip

    在java里可以通过Ganymed SSH-2, Expect4j等实现ssh登录,由于Ganymed SSH-2是纯java实现,并且可以实现scp,sftp等,因此我们采用Ganymed SSH-2

    ganymed-ssh2 远程连接java实例代码

    Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些...

    ganymed-ssh2-bui.jar 和jad.exe

    该jar包中有两个jar包,ganymed-ssh2-bui.jar 和 jad.exe ganymed-ssh2-bui.jar 是java从远程服务器下载文件删除文件必须要的jar包,直接放到系统中即可。 jad.exe 是在eclipse中用java从远程服务器下载文件时会报错...

    ganymed-ssh2-build210.jar

    使用ganymed-ssh2-build210.jar从远程服务器拉取文件到本地,或上传文件到指定服务器下的目录。个人略微修改了jar包的内容,解决了文件名中带空格时报错的问题,可以下载名字中带空格的文件。

    ganymed-ssh2-build210.7z

    ganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7z

Global site tag (gtag.js) - Google Analytics