Jsch 远程指令访问出现的问题
大家好,请问大家一个非常奇怪的问题,具体描述如下:我做了一个简单的访问ssh2的东西,目前在测试windows下的时候发现一些奇怪问题。我在调用一台机器的时候(虚拟机),无论传入的command为什么,他都是只返回登陆后的信息。
核心代码如下:
exceChannel = (ChannelExec)session.openChannel("exec");is = exceChannel.getInputStream();errStream = exceChannel.getErrStream();exceChannel.setCommand(command);exceChannel.connect();StringBuilder builder = new StringBuilder();while (true) {byte[] bytes = new byte;while(is.available()>0){is.read(bytes, 0, bytes.length);builder.append(new String(bytes));}while(errStream.available()>0){errStream.read(bytes, 0, bytes.length);log.error(new String(bytes));}log.debug("value:"+builder.toString());if (exceChannel.isClosed()) {log.debug("exit-status: " + exceChannel.getExitStatus());break;}//try {//Thread.sleep(1000);//} catch (Exception e) {//}exceChannel.disconnect();}
通过我的DEBUG发现,所传入的值等信息应该问题不大,同样的命令信息,我访问一个非虚拟机系统和一个虚拟机系统的答案是不一样的,如下:
虚拟机系统返回:
2013-01-23 16:32:29,093 DEBUG (SshCommandTool.java:112) - value:Microsoft Windows (C) Copyright 1985-2003 Microsoft Corp.D:\sftp\ICW\home\ssh2>
非虚拟机系统返回
2013-01-23 16:33:50,125 DEBUG (SshCommandTool.java:112) - value:java version "1.6.0_38"Java(TM) SE Runtime Environment (build 1.6.0_38-b05)Java HotSpot(TM) Client VM (build 20.13-b02, mixed mode, sharing)
我想问的是:是否大家在做这个时候会碰到这个问题?我使用的框架是Jsch,完全支持ssh的。而我在使用客户端程序putty分别访问两台机器的时候 是都可以执行的。
另外,我也分别尝试了不同的开源工具如j2ssh,trilead-ssh2都是这样的问题。求高人解释下,为什么这种问题会发生?如果要执行远程windows命令,该如何解决这个问题?
页:
[1]