`
yzhong_sa
  • 浏览: 90060 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
阅读更多
今天在做一个连接linux SSH服务器的一个客户端,要求可以执行自定义的linux命令,发现已经有一个工具可以帮组建立连接JSCH

在运动Shell命令的时候可以在控制台上输入linux命令去执行,但是这个东西要放到web上运用,需要将输入输出转到其他流,所以考虑用管道流来控制,但是具体怎么让传进去的命令执行还是不大清楚,下面是代码:

package com.sun.work;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.util.Properties;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

public class PipeStreamTest {

public static void main(String args[]){
try {
new PipeStreamTest().connect();
} catch (JSchException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void connect() throws JSchException {
JSch jsch = new JSch();
Session session = jsch.getSession("test", "10.67.7.109", 22);
session.setPassword("SVNAdmin");
Properties prop = new Properties();
prop.setProperty("StrictHostKeyChecking", "no");// StrictHostKeyChecking:
// ask | yes | no
session.setConfig(prop);
session.connect();

Channel channel = session.openChannel("shell");
Sender t1 = new Sender();
Receiver t2 = new Receiver();
PipedInputStream pis1 = t2.getInputStream();
PipedOutputStream pos1 = t1.getOutputStream();
//如果是用控制台,可以这样设置。
// channel.setOutputStream(System.out);
// channel.setInputStream(System.in);
channel.setInputStream(pis1);
channel.setOutputStream(pos1);


try {
pos1.connect(pis1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
t1.start();
t2.start();
channel.connect();
}

class Sender extends Thread {
private PipedOutputStream out = new PipedOutputStream();

public PipedOutputStream getOutputStream() {
return out;
}

public void run() {
String s = "ls -F";
try {
out.write(s.getBytes());
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

class Receiver extends Thread {
private PipedInputStream in = new PipedInputStream();

public PipedInputStream getInputStream() {
return in;
}

public void run() {
byte[] buf = new byte[10240];
try {
while(in.read()!=-1){
int len = in.read(buf);
System.out.println(len);
String s = new String(buf, 0, len);
System.out.println(s);
//in.close();
}

} catch (Exception e) {
e.printStackTrace();
}
}
}

}


最后感觉命令似乎并没有传到服务器端。。。。
分享到:
评论
1 楼 yzhong_sa 2009-03-03  
自己顶一顶。。。。

相关推荐

    jsch_jsch jsch_jsch jsch_jsch

    JSCH库主要应用于以下场景: 1. **远程文件传输**:通过SFTP(SSH File Transfer Protocol)协议,JSCH允许用户在本地和远程主机之间安全地上传和下载文件。 2. **远程命令执行**:使用JSCH,开发者可以执行远程...

    JSCH免费下载啦

    JSCH(Java Secure Channel)是一个开源的Java库,它允许开发者在Java应用程序中实现SSH(Secure Shell)协议,从而支持SFTP(Secure File Transfer Protocol)。JSCH库提供了对SSH2协议的强大支持,使得用户可以...

    jsch的jar包

    JSCH(Java Secure Channel)是一个开源的Java库,它实现了SSH2协议,用于在Java应用程序中实现安全的网络通信。SSH2协议提供了加密、身份验证和安全的数据传输,常用于文件传输服务如SFTP(Secure File Transfer ...

    jsch实现sftp文件上传、下载 ,jsch jar

    在IT行业中,尤其是在...总结,JSCH是一个强大且灵活的Java库,通过它我们可以轻松地在Java应用程序中实现SFTP文件的上传和下载。结合SSH协议的安全性,JSCH为开发者提供了在不安全网络环境中安全传输文件的有效工具。

    jsch0.1.55.jar_jsch0.1.53.jar

    JSch是Java Secure Channel的缩写,它是一个纯Java实现的SSH2库,允许Java应用程序连接到支持SSH协议的服务器,进行安全的数据传输。在给定的标题"jsch0.1.55.jar_jsch0.1.53.jar"中,提到了两个不同版本的JSch库...

    jsch版本50-53.rar

    JSCH,全称为Java Simple SSH,是一个开源的Java库,用于实现SSH2协议,以便在Java应用程序中进行安全的远程文件传输、shell访问以及端口转发。JSCH库广泛应用于需要与支持SSH2的服务器进行交互的场景,例如SFTP...

    JSCH0.1.46

    JSCH(Java Simple Connection Handler)是一个Java库,用于在客户端应用程序和远程服务器之间建立SSH(Secure Shell)连接。版本0.1.46是JSCH的最新版,它提供了丰富的功能,使开发者能够通过SSH协议在Java应用中...

    jsch-0.1.54.zip

    JSch(Java Secure Channel)是一个开源的Java库,它实现了SSH2协议,用于在Java应用程序中实现安全的远程登录和其他安全网络服务。JSch库的版本0.1.54是我们关注的重点,这个版本包含了源代码和示例程序,可以帮助...

    jsch API文档

    JSch(Java Secure Channel)是一个用Java实现的SSH2库,它允许Java应用程序连接到支持SSH协议的服务器,进行安全的数据传输。JSch库提供了广泛的API,涵盖了SSH协议的主要功能,包括连接建立、身份验证、会话管理、...

    可用的jsch-0.1.54.jar

    JSCH(Java Secure Channel)是一个开源的Java库,它实现了SSH2协议,用于在Java应用程序中实现安全的远程登录、文件传输、端口转发等功能。JSCH库广泛应用于需要通过SSH连接到远程服务器进行操作的场景,如自动化...

    jsch-0.1.55.jar 包

    `jsch-0.1.55.jar` 是一个Java库,主要用于实现SSH(Secure Shell)协议,它允许Java应用程序在远程Linux服务器上进行安全的登录和命令执行。SSH是一种网络协议,用于加密网络通信,确保数据传输的安全性,广泛应用...

    com.jcraft.jsch

    在实际应用中,使用jsch库进行SSH连接的一般步骤如下: 1. 加载jsch库,并实例化JSch对象。 2. 创建Session对象,设置主机名、端口号、用户名和认证方式。 3. 调用Session的connect()方法建立连接。 4. 创建通道,...

    jsch的jar包,包含0.1.51,0.1.52,0.1.53,0.1.54等这几个版本

    JSch,全称为Java Secure Channel,是一个开源的Java库,用于实现SSH(Secure Shell)协议。这个库的主要目的是提供安全的远程登录、文件...通过了解和掌握JSch的使用,开发者可以构建出更加安全、可靠的Java应用程序。

    JSCH执行命令是输入密码的方法

    在IT领域,JavaScript Secure Channel (JSCH) 是一个非常实用的Java库,它允许开发者在Java应用程序中实现Secure Shell (SSH) 协议。本文将深入探讨如何使用JSCH库来执行远程命令,并且处理输入密码的情况。我们将...

    jsch实现远程传输

    JSch(Java Secure Channel)是一个纯Java实现的SSH2库,它允许Java应用程序连接到支持SSH协议的服务器,进行安全的远程操作,如文件传输。在本文中,我们将深入探讨JSch库的工作原理、如何配置以及如何使用JSch实现...

    jcraft-jsch.zip

    JSch库使Java开发者能够方便地在Java应用中集成SSH功能,例如执行远程命令、文件传输、端口转发等。对于系统管理员和开发者来说,这是一个非常实用的工具,尤其是在需要远程管理Linux服务器时。 JSch的核心功能包括...

    jsch 1.50 版本

    JSch(Java Secure Channel)是一个纯Java实现的SSH2库,它允许Java应用程序连接到支持SSH2协议的服务器,进行安全的远程登录、文件传输、端口转发等操作。1.50版本是JSch的一个重要里程碑,它可能包含了对之前版本...

    java进行ssh协议连接的jar包jsch-0.1.54.jar

    JSch库提供了一个API,使得开发者可以方便地在Java应用中建立SSH连接,执行命令、传输文件以及打开隧道。JSch-0.1.54.jar是该库的一个版本,包含了所有必要的类和方法来支持SSH连接。 要使用JSch库,首先需要在项目...

    jsch-0.1.53.zip

    JavaScript SSH (JSch) 是一个Java库,它允许开发者在Java应用程序中实现Secure File Transfer Protocol (SFTP)、Secure Copy (SCP) 和 SSH2 (Secure Shell) 的功能。`jsch-0.1.53.zip` 包含的是JSch库的0.1.53版本...

    升级jsch包解决ssh升级后jschexception:algorithm negotiation fail 等问题

    JSCH(Java Simple SSH)是一个用Java编写的库,它实现了SSH2协议,允许Java应用程序进行加密的通信,如执行远程命令、文件传输等。然而,随着网络安全标准的不断提升,SSH的加密算法也在不断更新,这可能导致旧版本...

Global site tag (gtag.js) - Google Analytics