ganymed-ssh2简介:

Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些都没有依赖任何JCE provider,而且所有这些都包含加密的功能。

Ganymed SSH-2 for Java系列2之连接远程服务器

连接远程服务器,新建一个java工具类,将其命名为CommandRunner;

创建一个连接服务器的静态方法:

[java] view plaincopy
  1. public static Connection getOpenedConnection(String host, String username,
  2. String password) throws IOException {
  3. if (logger.isInfoEnabled()) {
  4. logger.info("connecting to " + host + " with user " + username
  5. + " and pwd " + password);
  6. }
  7. Connection conn = new Connection(host);
  8. conn.connect(); // make sure the connection is opened
  9. boolean isAuthenticated = conn.authenticateWithPassword(username,
  10. password);
  11. if (isAuthenticated == false)
  12. throw new IOException("Authentication failed.");
  13. return conn;
  14. }

测试代码:

[java] view plaincopy
  1. public static void main(String[] args) {
  2. Connection conn = null;
  3. try {
  4. conn = CommandRunner.getOpenedConnection("172.16.18.141", "root",
  5. "123456");
  6. if (null != conn) {
  7. System.out.println("连接服务器成功!");
  8. }
  9. catch (IOException e) {
  10. e.printStackTrace();
  11. finally {
  12. conn.close();
  13. conn = null;
  14. }
  15. }
  16. 至此,连接服务器的静态方法完成,但是这样处理会存在一个问题,就是我们都知道ssh默认端口是22,如果服务器的ssh 端口不是22,那么这个连接服务器的代码是不是就不可以用了啦,所以需要简单的修改下 ,修改如下:

    方法增加一个端口参数:

    连接的地方将参数放进去:

    [java] view plaincopy
    1. Connection conn = new Connection(host,port);

    这样不论ssh端口改为什么,我们底层的这个连接方法都不在需要改动了。

Ganymed SSH-2 for Java系列3之执行远程shell 命令

分类: JAVA shell SSH22014-02-24 18:42 846人阅读 评论(1) 收藏 举报

利用Ganymed SSH-2 for Java 连接到远程服务器,然后执行shell命令;

首先我们再在之前CommandRunner类中再添加一个执行shell命令的方法,具体如下所示:

[java] view plaincopy
  1. public static String execShellScript(String host, String username,
  2. String password,
  3. String cmd, int port) throws IOException {
  4. if (logger.isInfoEnabled()) {
  5. logger.info("running SSH cmd [" + cmd + "]");
  6. }
  7. Connection conn = null;
  8. Session sess = null;
  9. InputStream stdout = null;
  10. BufferedReader br = null;
  11. StringBuffer buffer = new StringBuffer("exec result:");
  12. buffer.append(System.getProperty("line.separator"));// 换行
  13. try {
  14. conn = getOpenedConnection(host, username, password, port);
  15. sess = conn.openSession();
  16. sess.execCommand(cmd);
  17. stdout = new StreamGobbler(sess.getStdout());
  18. br = new BufferedReader(new InputStreamReader(stdout));
  19. while (true) {
  20. // attention: do not comment this block, or you will hit
  21. // NullPointerException
  22. // when you are trying to read exit status
  23. String line = br.readLine();
  24. if (line == null)
  25. break;
  26. buffer.append(line);
  27. buffer.append(System.getProperty("line.separator"));// 换行
  28. if (logger.isInfoEnabled()) {
  29. logger.info(line);
  30. }
  31. }
  32. finally {
  33. sess.close();
  34. conn.close();
  35. }
  36. return buffer.toString();
  37. }

测试代码:

[java] view plaincopy
  1. public static void main(String[] args) {
  2. String cmd = "uname -a";
  3. try {
  4. String info = CommandRunner.execShellScript("172.16.18.141", "root",
  5. "123456",cmd,22);
  6. System.out.println("info is:"+info);
  7. catch (IOException e) {
  8. e.printStackTrace();
  9. }
  10. }

执行结果

log4j:WARN No appenders could be found for logger (com.ssh2.shell.ganymed.CommandRunner).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
info is:exec result:
Linux localhost.localdomain 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

转自:http://blog.csdn.net/wangmuming/article/details/19835631

ganymed-ssh2-build210.jar 的使用相关推荐

  1. Java 使用 Ganymed SSH-2 连接 Linux

    一.引入jar包(基于Maven项目) <dependency><groupId>ch.ethz.ganymed</groupId><artifactId&g ...

  2. SSH客户端开发开源组件Ganymed SSH-2 for Java初体验

    1.Ganymed SSH-2 for Java Ganymed SSH-2 for Java是一个纯Java实现的SHH2库. 看官方介绍: Ganymed SSH-2 for Java is a ...

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

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

  4. ganymed ssh-2 for java,SSH客户端开发开源组件Ganymed SSH-2 for Java初体验,ganymedssh-2

    SSH客户端开发开源组件Ganymed SSH-2 for Java初体验,ganymedssh-2 1.Ganymed SSH-2 for Java Ganymed SSH-2 for Java是一 ...

  5. Ganymed SSH-2

    2019独角兽企业重金招聘Python工程师标准>>> 我们在日常开发中,有时候会遇到触发一个linux命令,比如清理临时文件,或者触发一个shell命令.那么这个时候就需要通过ja ...

  6. Ganymed SSH-2 for Java系列11之SCPClient

    Ganymed SSH-2 for Java系列11之SCPClient SCPClient是一个基本的java操作类,其可以从服务器复制文件到SSH-2服务器,或者从服务器上scp出文件到本地服务器 ...

  7. ganymed ssh-2 for java_Ganymed SSH-2 for Java

    Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细 ...

  8. ganymed ssh-2 for java_如何利用Ganymed SSH-2模拟SSH操作

    简介:Ganymed SSH-2 for Java is a library which implements the SSH-2 protocol in pure Java (tested on J ...

  9. 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 ...

  10. 介绍一个实现ssh-2协议的java库:Ganymed SSH-2 for Java

    官方地址 官方地址:http://www.ganymed.ethz.ch/ssh2/,打开页面后,如下图位置,选择一个版本下载,我以最后发布版本说明,从图中也可以看到最后一次发版是在2006年,很老的 ...

最新文章

  1. C# http 性能优化500毫秒到 60 毫秒
  2. 智慧城市建设的关键技术研究
  3. Cell Reports | 佩戴假肢后,真的能产生正确位置的触觉感吗?研究人员表示并不能...
  4. Android 网络请求详解
  5. 星型模型和雪花型模型比较
  6. 你的工作是为了你自己!
  7. Java并发之volatile
  8. 这是2019年适合Java程序员读的10本书
  9. 2021 最新版《神经网络和深度学习》中文版开放下载!
  10. 遇到一个valgrind自身的bug
  11. mysql完备_mysql简单完备脚本
  12. YYKit之YYModel
  13. Stack Frame JAVA运行时数据区域之栈帧
  14. 中科大一所学校撑起中国人工智能半壁江山
  15. 水下声学的基本声学量介绍
  16. lae界面开发工具入门之介绍十四--《介绍lae在windows平台上如何打包编译》
  17. zb怎么做渲染图_zbrush高模效果图渲染技巧
  18. 阻滞增长函数matlab拟合,matlab指数增长和阻滞增长拟合代码讲课稿
  19. PREP 语法笔记 2
  20. 4.DQL查询数据(※重点※)

热门文章

  1. JAVA实现小精度多边形等距外扩
  2. 读书笔记 - 《魔鬼经济学》
  3. BI如何配置“花生壳”,看这一篇就够了
  4. developer工具oracle导出,[转]PL/SQLDeveloper导入导出Oracle数据库方法
  5. appium locator
  6. C语言中的前置/后置++、- -
  7. Tomcat 实用安装教程
  8. nn.functional.sigmoid
  9. 清晰还原31年前现场,火山引擎超清修复Beyond经典演唱会
  10. 胡伟武《处理器设计》(系统结构)2009年1月试题