`
yzhong_sa
  • 浏览: 88803 次
  • 性别: 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_API.CHM

    JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。

    eclipse-jsch-agent-proxy

    eclipse-jsch-agent-proxy 在 Eclipse 上使用 ssh-agent 和 Pageant 的插件... 使用这些插件运行 Eclipse, 运行 > 运行方式 > Eclipse 应用程序选择您要使用的 ssh 代理, 窗口 > 首选项 > 常规 > 网络连接 > SSH2

    TuxRemote:Android 应用程序通过 ssh 控制您的 linux 桌面

    Android 应用程序通过 ssh(使用 Jsch)控制您的 linux 桌面。 ## 依赖 # wmctrl, openssh-server ## 配置文件 ## 去做 config.xml 中的应用程序列表: 定义要下载的图标列表的函数,以及它们在服务器上...

    nus-soc-print:通过SSH将办公文档和PDF文件打印到NUS School of Computing的Unix打印机的Android应用程序

    nus-soc-print 这是一个Android应用程序,可通过SSH将办公文档和PDF文件打印到NUS School of Computing的Unix打印机。 iOS版本存在于。 该应用程序已在。...Jsch SSH库 Flurry Analytics(仅适用于Andr

    用expect 实现切换用户时自动输入密码.txt

    应用一: 实现从普通用户“test”切换到root用户,自动输入root的密码,不用在终端提示符下执行密码输入操作。 步骤: (1)vi autosu.sh (2)#! /usr/bin/expect -f //指定expect工具的路径,如果不清楚具体路径,...

    lightswitch:带有丑陋代码的 Android 应用程序来控制我的灯光和其他东西(通过 ssh)

    带有丑陋代码的 Android 应用程序,可通过 ssh 会话控制我的灯光和其他东西ssh 会话需要两个库:JSCH 和 JZLIB

    sshdrill:ssh包装器可自动在多个跳转主机上创建隧道

    sshdrill将请求的转发转换为途中每个跃点的一系列转发,扫描正在运行的嵌套ssh会话数量,并相应地应用转发。 ##示例会话 me@workstation:~$ alias ssh=sshdrill me@workstation:~$ ssh jumphost1 user@jumphost1:~...

    Kismet_Wardriving_Suite:用于在chroot环境中自动化kismet_server,gpsd和giskismet的Android工具

    Kismet_Wardriving_Suite ... 该应用程序将连接回它启动的SSH服务器,并通过Jsch Java库发出命令。 默认密码设置为“ changeme”,因此请勿在Linux Deploy中更改它。 第二次提交:该应用程序已更新

    7只蜜蜂

    7只蜜蜂 目的 7Bee是一个脚本程序,主要目的是执行项目构建脚本。... Windows脚本可能需要调整JDK路径,还需要下载并将其放置在3rdparty \ jsch \ lib \中。 运行引导程序后,将在lib目录中创建bee.jar。 但是

    JSSHTunnel-开源

    JSSHTunnel是一个轻量级的GUI应用程序,可通过SSH连接转发本地和远程端口。 它是用Java编写的,并使用Eclipse SWT和JSch。 您只需要一个JVM即可运行它。 0.0.0针对Windows,位于系统托盘中。

Global site tag (gtag.js) - Google Analytics