2016-03-22 54 views
1

java sshクライアント(http://www.jcraft.com/jsch/)を使用してリモートマシンに接続し、コマンドを実行しています。 リモートマシンに接続してコマンドを実行するまで、コードは正常に動作しています。しかし、問題は、コマンドが正常に実行された後でもチャネルとセッションが切断されないということです。コマンド実行後にJsch java sshクライアントが切断されない

私はsession.disconnectとchannel.disconnectも呼びましたが、それでも問題です。ここで

は私のコードです:

JSch jsch = new JSch(); 
    String host = null; 
    host = "192.168.102.211"; 
    String privateKey = "C:\\test\\key"; 
    String cmd = "a"; 
    String command = "b"; 

    jsch.addIdentity(privateKey); 
    Session session = jsch.getSession("user1", host, 22); 
    Channel channel = session.openChannel("shell"); 

    UserInfo ui = new MyUserInfo() { 
     public boolean promptYesNo(String message) { 
      return true; 
     } 
    }; 
    session.setUserInfo(ui); 
    session.connect(30000); 

    OutputStream ops = channel.getOutputStream(); 
    PrintStream ps = new PrintStream(ops, true); 

    channel.connect(); 
    ps.println(cmd); 
    ps.println(command); 
    ps.close(); 

    InputStream in = channel.getInputStream(); 
    byte[] bt = new byte[1024]; 
     while (in.available() > 0) { 
     // int i = in.read(bt, 0, 1024); 
      for (int i = in.read(); i >=0; i--) 
        { 
      String str = new String(bt, 0, i); 
      System.out.print(str); 
        } 
      break; 

    } 

if (channel != null) { 
     channel.disconnect(); 
     session.disconnect(); 
     System.out.println(channel.isConnected()); 
    } 
} 

答えて

0

は、関連するコードとのご質問を更新して提案してください。 ちょうどヒント、あなたは何かのようにする必要があります。

} finally { 
    if (channel != null) { 
     Session session = channel.getSession(); 
     channel.disconnect(); 
     session.disconnect(); 
     System.out.println(channel.isConnected()); 
    } 
} 
+0

最終的にブロックを追加した後、まだ動作していません。なぜwhileループが終了していないのかわかりません.... – user2315104

関連する問題