- 浏览: 810195 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
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中
下面我们重点介绍一下ganymed-ssh2 的使用,非常简单:
打印结果:
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); } } }
评论
于是将代码放到项目中,部署到linux环境下,出现问题debug了一下,发现每次运行到
String line = br.readLine()时去读取Linux控制台返回的值时,就卡住了。
好像是进入了类似于waitFor()的状态。
求解
我的java程序部署在linux环境下面,用它来链接windows机,windows机下的telnet服务和23端口都已经开通,但是却链接不上,但是在linux下用telnet命令,却能够链接上,请问这个是什么原因????
你写的java程序不支持连接windows吧 比如无法匹配返回的prompt(windows下面的prompt是>)
我的java程序部署在linux环境下面,用它来链接windows机,windows机下的telnet服务和23端口都已经开通,但是却链接不上,但是在linux下用telnet命令,却能够链接上,请问这个是什么原因????
像:[root@AY140321084527950cefZ usr]#
这个方式返回的好像只有#号后面的内容 前面的内容没有 如何获得呢?
比如用root登录,
想达到
第一个命令"pwd"输出"/root"
第二个命令"cd test"
第三个命令"pwd"输出"/root/test"
如果想做成这样,这三个命令共享conn和session都达不到啊,
有什么办法吗?谢谢哈
sess.execCommand("pwd");
sess.close();
sess.execCommand("cd test");
sess.close();
sess.execCmmand("pwd");
sess.close();
或者sess.execCmmand"pwd && cd rpt && pwd");
比如用root登录,
想达到
第一个命令"pwd"输出"/root"
第二个命令"cd test"
第三个命令"pwd"输出"/root/test"
如果想做成这样,这三个命令共享conn和session都达不到啊,
有什么办法吗?谢谢哈
恩 求教
如我先执行:ssh root@61.142.114.210
然后接着提示输入密码
这种要怎么实现?
可以在你执行的脚本中设置需要用到的变量 如:写全路径。这个问题和父子SHELL有关。看看这方面的可以解决你的问题。。
new Connection("localhost", 22);中不是有指定端口号的么。
比如用root登录,
想达到
第一个命令"pwd"输出"/root"
第二个命令"cd test"
第三个命令"pwd"输出"/root/test"
如果想做成这样,这三个命令共享conn和session都达不到啊,
有什么办法吗?谢谢哈
应该怎么配置呢?
发表评论
-
eclipse link 方式管理插件
2012-02-24 15:55 1542以配置tomcat插件为例: (条件:F:\eclip ... -
使用mapinfo 开发GIS 应用
2011-03-18 06:56 12871. mapJ 对象是在tomcat启动的时候 从web ... -
java mail adapter
2011-01-21 12:23 15272011.04.27: 使用jmail 发送中文标题的 ... -
4种调用https服务的方式
2011-01-05 23:45 8775以前在网厅的时候,请求计费的账单开 ... -
正则表达式30分钟入门教程
2010-11-17 12:58 1470正则表达式30分钟入门教程 -
java 异常层次
2010-05-26 16:14 1327Java 中的异常类,包括内置的异常类以及自定义的异常类,都直 ... -
java 解惑你知多少 (转载)
2010-04-26 12:43 1192(1) http://jiangzhengjun.it ... -
jvm调优
2010-04-16 15:35 1277(1) http://pengjiaheng.itey ... -
谈谈重构
2010-04-15 13:34 1308代码重构阅读心得[转] http://www.cnblogs ... -
session会话跟踪的一个小例子
2010-03-14 18:16 1861内容包括: 必备知识: ... -
cookie机制和session机制的区别
2010-03-14 17:06 1192一、cookie机制和sessio ... -
Cookie详解
2010-03-14 16:02 1393Cookie在英文中是小甜品 ... -
什么是Cookie?
2010-03-14 15:06 1444按照Netscape官方文档中 ... -
任务、进程和线程的区别(转)
2010-02-04 17:16 2274任务(task)是最抽象 ... -
加密,解密,认证,数字签名,公钥私钥
2010-01-13 20:42 2322Bob,Alice和数字证书 网络安全中最知名的 ... -
JNI
2009-12-26 14:09 1576JNI是Java Native Inter ... -
JSON在处理hibernate中的cascade对象时的解决方案
2009-12-24 22:12 1520如果数据间存在级联关系,在hibernate中极容易嵌套而 ... -
digester框架 将 XML->JavaBean
2009-11-08 17:38 1746digester组件简化了xml文 ... -
什么是P问题、NP问题和NPC问题
2009-10-25 20:20 2044什么是P问题、NP问题和NPC问题 出自mat ... -
用Fat Jar Eclipse Plug-In打包可执行jar文件
2009-09-30 08:29 3958Fat Jar Eclipse Plug-In [FJEP] ...
相关推荐
Java 远程连接 Linux 服务器使用 Ganymed-SSH2 库 标题解释 本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2...
ganymed-ssh2是一个开源Java库,它提供了对SSH2协议的全面支持,使得开发人员能够在Java应用程序中轻松地进行远程操作,如执行命令、传输文件等。本文将深入探讨ganymed-ssh2工具类的使用及其核心功能。 ** SSH连接...
再者,`ganymed-ssh2-build250-examples.jar`包含了一些示例代码,这些示例展示了如何使用Ganymed SSH2库进行基本操作,如建立SSH连接、执行远程命令、SFTP文件传输等。开发者可以通过运行这些示例快速上手,为自己...
标题中的“ganymed-ssh2-262.jar”是一个特定版本的SSH2库,由Ganymed项目提供,用于Java环境下的SSH(Secure Shell)连接。SSH是一种网络协议,常用于安全地远程登录到服务器、传输文件以及执行命令。Ganymed SSH2...
ganymed-ssh2-build210是Java平台上一个流行的开源SSH2实现库,由Christian Schneider开发并维护。这个库提供了全面的功能,包括文件传输、命令执行、端口转发等,广泛应用于自动化运维、远程控制、数据同步等多个...
Java通过ganymed-ssh2-build210.jar库实现SSH远程连接Linux终端是一个常见的应用场景,主要用于自动化运维、系统管理或者开发过程中需要与Linux服务器交互的场景。ganymed-ssh2-build210.jar是Java的一个开源SSH库,...
在Java环境中,开发人员通常使用库来实现SSH功能,其中一个常用的库就是Ganymed SSH-2。这个库名为ganymed-ssh2-build,它允许Java应用程序与远程服务器建立SSH连接,执行命令,传输文件等。 Ganymed SSH-2库是由...
ganymed-ssh2-bui.jar 是java从远程服务器下载文件删除文件必须要的jar包,直接放到系统中即可。 jad.exe 是在eclipse中用java从远程服务器下载文件时会报错,在eclipse中跑的话,需要设置路径,windows-preferences...
下载网站https://repo1.maven.org/maven2/ch/ethz/ganymed/ganymed-ssh2/build210/ 此jar源码文件中包含以下这些类: SCPClient.lass Session.class Connection.clss 等许多文件传输类。 查看源码的方法: 1.把此jar...
ganymed-ssh2 ,java支持ssh协议的jar包
这个压缩包中可能包含ganymed-ssh2的两个不同版本的构建——build250和build210,这是一个开源的Java实现SSH2协议的库。SSH2是SSH协议的第二版,提供了更强大的加密和身份验证机制,广泛应用于Linux系统中。 描述中...
Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些...
解决openssh升级到8.2以后无法登录的问题,支持jdk1.5及以上版本
使用ganymed-ssh2-build210.jar从远程服务器拉取文件到本地,或上传文件到指定服务器下的目录。个人略微修改了jar包的内容,解决了文件名中带空格时报错的问题,可以下载名字中带空格的文件。
ganymed-ssh2 ,java支持ssh协议的jar包
连接linux 的jar。连接linux 的jar。连接linux 的jar。连接linux 的jar。连接linux 的jar。连接linux 的jar。 ganymed-ssh2-build210
ganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7zganymed-ssh2-build210.7z