问题描述
最近碰到一个问题,ganymed-ssh2-build210.jar中可以在一个session里执行多条命令?代码如下:try{ConnectionInfoinfo=conn.connect(null,time_out,0);booleanresult=conn.authenticateWithPassword(username,password);if(result!=false){Sessionsshsession=conn.openSession();for(inti=0;i<commands.size();i++){if(sshsession!=null){sshsession.execCommand(commands.get(i));in=newStreamGobbler(sshsession.getStdout());reader=newBufferedReader(newInputStreamReader(in));Stringresponse=null;while((response=reader.readLine())!=null)builder.append(response+"n");sshsession.waitForCondition(ChannelCondition.EXIT_STATUS|ChannelCondition.CLOSED|ChannelCondition.EOF,time_out);if(sshsession.getExitStatus()==null){break;}}}if(builder.toString().isEmpty()){for(Stringcommand:commands){builder.append(command+":commandnotfoundn");}}}resu=builder.toString();resu=newString(resu.getBytes());returnresu;}catch(IOExceptione){logger.fatal("error",e);returne.getMessage();}finally{if(reader!=null){try{reader.close();in.close();}catch(finalIOExceptione){logger.fatal("error",e);}}conn.close();}这里执行完一条命令后sshsession.getExitStatus()始终为null,导致不能继续执行下一条命令
解决方案
本帖最后由 wenhuifen 于 2012-02-03 14:47:59 编辑
解决方案二:
我也有这样的问题,主要是用来服务器的跳转,不知道怎么弄。期待中。。。。
解决方案三:
楼主,问一个菜鸟级的问题,登录时一直出现connectionrefused是怎么回事啊?我用putty可以连上的。。。
解决方案四:
PrintWriterpw=newPrintWriter(newOutputStreamWriter(sess.getStdin()));pw.write("cd/home");pw.flush();pw.write("pwd");pw.flush();
解决方案五:
引用3楼lhn760865548的回复:
PrintWriterpw=newPrintWriter(newOutputStreamWriter(sess.getStdin()));pw.write("cd/home");pw.flush();pw.write("pwd");pw.flush();
不对啊,这样怎么让它开始执行你所输入的这些命令呢???