Repository: karaf Updated Branches: refs/heads/karaf-3.0.x 6e1fb913e -> caef545fb
[KARAF-2623] Improve exit code for SSH/client Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/caef545f Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/caef545f Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/caef545f Branch: refs/heads/karaf-3.0.x Commit: caef545fb022bd03b4f267557b2bfb566a94af4a Parents: 6e1fb91 Author: Jean-Baptiste Onofré <[email protected]> Authored: Mon Apr 7 09:20:03 2014 +0200 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Mon Apr 7 09:21:53 2014 +0200 ---------------------------------------------------------------------- client/src/main/java/org/apache/karaf/client/Main.java | 6 +++++- .../src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/caef545f/client/src/main/java/org/apache/karaf/client/Main.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/karaf/client/Main.java b/client/src/main/java/org/apache/karaf/client/Main.java index 81e0cf1..1c1f7b9 100644 --- a/client/src/main/java/org/apache/karaf/client/Main.java +++ b/client/src/main/java/org/apache/karaf/client/Main.java @@ -74,6 +74,7 @@ public class Main { SshClient client = null; Terminal terminal = null; + int exitStatus = 0; try { client = SshClient.setUpDefaultClient(); setupAgent(config.getUser(), client); @@ -134,6 +135,9 @@ public class Main { channel.setErr(AnsiConsole.wrapOutputStream(System.err)); channel.open(); channel.waitFor(ClientChannel.CLOSED, 0); + if (channel.getExitStatus() != null) { + exitStatus = channel.getExitStatus(); + } } catch (Throwable t) { if (config.getLevel() > SimpleLogger.WARN) { t.printStackTrace(); @@ -153,7 +157,7 @@ public class Main { } catch (Throwable t) { } } - System.exit(0); + System.exit(exitStatus); } private static void setupAgent(String user, SshClient client) { http://git-wip-us.apache.org/repos/asf/karaf/blob/caef545f/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java ---------------------------------------------------------------------- diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java index a825f07..39bf3fa 100644 --- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java +++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java @@ -85,6 +85,7 @@ public class ShellCommand implements Command, SessionAware { } public void start(final Environment env) throws IOException { + int exitStatus = 0; try { final CommandSession session = commandProcessor.createSession(in, new PrintStream(out), new PrintStream(err)); session.put("SCOPE", "shell:osgi:*"); @@ -117,13 +118,15 @@ public class ShellCommand implements Command, SessionAware { session.getConsole().println(session.format(result, Converter.INSPECT)); } } catch (Throwable t) { + exitStatus = 1; ShellUtil.logException(session, t); } } catch (Exception e) { + exitStatus = 1; throw (IOException) new IOException("Unable to start shell").initCause(e); } finally { StreamUtils.close(in, out, err); - callback.onExit(0); + callback.onExit(exitStatus); } }
