Hi,

I have a trouble using (SSH)Exec problem.
It is that "channel object" sometimes fails to detect the close signal.
Can anyone help me?

While program does polling a remote SSH server by "ls" command,
"if(channel.isClosed())" sometimes doesn't change true forever!

According to my experience, it occurs after running some nights or
more than 1000 times loop.

For debug, I add below test message, then it appears.
It shows exit status code changed( from -1 to 0 ),
but channel hasn't closed.
  if( !channel.isClosed() && channel.getExitStatus() == 0 ){
    System.out.println("before close exit-status changed!" );
  }


Q1. Is is a known problem?

Q2. How should I write program to recover this problem?

------  source code -------------------------------
 while( true ){ // infinite loop

    try{
      Channel channel=session.openChannel("exec");
      ((ChannelExec)channel).setCommand( "ls" );

      channel.setInputStream(null);
      ((ChannelExec)channel).setErrStream(System.err);
      InputStream in=channel.getInputStream();

      channel.connect();

      byte[] tmp=new byte[1024];

      while(true){ // wait command end
        while(in.available()>0){
          int i=in.read(tmp, 0, 1024);
          if(i<0) { break; }
          System.out.print(new String(tmp, 0, i));
        }
        if(channel.isClosed()){
          System.out.println("exit-status: "+channel.getExitStatus());
          break;
        }

        // for debug, if miss isClosed()
        if( !channel.isClosed() && channel.getExitStatus() == 0 ){
          System.out.println("before close exit-status changed!" );
        }

        try{
          Thread.sleep(1000);
        }catch(Exception ee){}

      } // while( true ){ //wait command end

      channel.disconnect();

    } catch(Exception e){
      System.out.println(e);
    }

  }// while( true ){ // infinite loop

------  source code -------------------------------

Best Regards,

----------------------------------
Yukimasa Matsuda
  Quatre-i Science Co., Ltd.
    e-mail: mats...@i4s.co.jp
    http://www.i4s.co.jp
----------------------------------


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
JSch-users mailing list
JSch-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jsch-users

Reply via email to