使用Jsch执行多个Unix命令(执行操作)

时间:2016-04-12 04:43:55

标签: java unix jsch

我正在尝试执行1个Unix命令,如果第一个命令的输出是非零,那么我想执行command2。我的下面的代码是第一个命令的工作文件,但在if(status!=“0”)条件语句后我没有得到如何执行command2。我尝试在If语句中使用相同的代码但没有输出。

        String command1="test -f EktaProg/"+nameDate+"*.txt; echo $?";
        String command2="test -f EktaProg/"+nameDate+"*.gz; echo $?";
        java.util.Properties config = new java.util.Properties(); 
        config.put("StrictHostKeyChecking", "no");
        JSch jsch = new JSch();
        Session session=jsch.getSession(user, host, 22);
        session.setPassword(password);
        session.setConfig(config);
        session.connect();
        System.out.println("Connected");

        Channel channel1=session.openChannel("exec");
        ((ChannelExec)channel1).setCommand(command1);
        channel1.setInputStream(null);
        ((ChannelExec)channel1).setErrStream(System.err);


        InputStream in=channel1.getInputStream();
        channel1.connect();
        byte[] tmp=new byte[1024];
        while(true){
            while(in.available()>0){
                int i=in.read(tmp, 0, 1024);
                if(i<0)
                    break;
                status=(new String(tmp, 0, i));
                System.out.print(status);

                if(status !="0"){

                }

            }
            if(channel1.isClosed()){
                System.out.println("exit-status: "+channel1.getExitStatus());
                break;
            }
            try{Thread.sleep(1000);}catch(Exception ee){}
        }

        channel1.disconnect();
        session.disconnect();
        System.out.println("DONE");
    }catch(Exception e){
        e.printStackTrace();
    }

0 个答案:

没有答案