2016-11-30 8 views
0

JavaのJSchを使用して、サーバーのファイル変更状況をリモートでチェックしています。出力とは別に、私は終了コードもチェックしています。 テストサーバーが正常に動作し、終了コードに0を指定している間は、本番サーバーは終了コード-1を送出しています。この-1とその意味についての詳細はどうすればわかりますか?終了コード-1を与えるJava/JSchのSSHコマンド

ここは私のコードであり、機密領域が削除されています。
最終行の詳細については、どうすれば入手できますかgetExitStatus

JSch js=new JSch(); 
Session s = js.getSession(username, host, 22); 
s.setPassword(password); 

Properties ssconfig = new Properties(); 
ssconfig.put("StrictHostKeyChecking", "no"); 
s.setConfig(ssconfig); 
s.connect(); 

Channel c = s.openChannel("exec"); 
ChannelExec ce = (ChannelExec) c; 

ce.setCommand("cd <some file dir> && date && ls -ltr"); 
ce.setErrStream(System.err); 

ce.connect(); 

/* 
* temporary test print 
*/ 
BufferedReader reader = new BufferedReader(new InputStreamReader(ce.getInputStream())); 
String line; 
while ((line = reader.readLine()) != null) { 
    System.out.println(line); 
} 

/* 
* end of temporary print 
*/ 
ce.disconnect(); 
s.disconnect(); 

System.out.println("Exit code: " + ce.getExitStatus()); 

return ce.getExitStatus(); 

答えて

1

getExitStatusは、終了コードがまだわからない場合は-1を返します。

Channel.disconnectを呼び出す前にChannel.isClosedを待つ必要がある場合があります。


テスト環境では、接続またはサーバーが読み込み前に終了ステータスを満たすのに十分速い場合があります。プロダクションサーバー上ではありません。シンプルな競争状態。

関連する問題