2016-11-16 32 views
0

私はJSchを初めて使い、リモートのLinuxマシンに接続するために使っています。私はセッションを作成し、Linuxマシン上でコマンドを実行するためのチャンネルを開いています。このコマンドは、実行に約30分かかり、出力を与えます。しかし、セッションは15分後に終了します。コマンドが実行を完了するまでセッションをアクティブにする必要があります。どのようにセッションを長くすることができますか?JSchでセッションを長くする方法を教えてください。

sendKeepAliveMsg()関数を使用しても、セッションを15分以上アクティブに保っていないことがあります。

iを使用しているコードは、予め

JSch jsch=new JSch(); 
java.util.Properties config = new java.util.Properties(); 
config.put("StrictHostKeyChecking", "no"); 
Session session = null; 
try 
{ 
    session = jsch.getSession(user,client_ip,22); 
    session.setPassword(secure_pwd); 
    session.setConfig(config); 
    session.connect(); 
    session.sendKeepAliveMsg(); 
    Channel channel = null; 
    channel = session.openChannel("exec"); 
    ((ChannelExec)channel).setCommand(command); 
    InputStream in = null; 
    in = channel.getInputStream(); 
    channel.connect(); 
    byte[] tmp=new byte[1024]; 
    while(true) 
    { 
     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; 
     } 
    } 
} 
catch(Exception e) 
{ 
    System.out.println(e.toString()); 
} 

おかげ以下の通りである

+0

コマンドは15分以上連続して出力を生成していますか?または断続的にのみ?または最後にのみ? –

+0

15分後にはどうなりますか?どのようなエラーが発生する –

+0

実行を完了した後のコマンドは結果を返します。私は自分のプログラムで結果を解析する必要があります。 15分後にプログラムは終了しますが、コマンドはリモートマシン上で実行されます –

答えて

0

sendKeepAliveMsgに定期的に電話をかけなければなりません。

開始時に一度呼び出すと効果がありません。

0
JSCHため

アイドルタイムアウトを指定することができ、関連する接続以下setServerAliveInterval

さらに他のいくつかのタイムアウトを使用して調整することができます同様に、コードでも

session.connect(5000); 
関連する問題