Repository: karaf Updated Branches: refs/heads/master c46360535 -> 3ce89098b
[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/3ce89098 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/3ce89098 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/3ce89098 Branch: refs/heads/master Commit: 3ce89098bf499b360369319a603bcc2176f8f348 Parents: c463605 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:20:03 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/3ce89098/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 a2df5c5..05f567f 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 { final Console console = System.console(); client = SshClient.setUpDefaultClient(); @@ -135,6 +136,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(); @@ -154,7 +158,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/3ce89098/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 62d8ba6..94ae6ce 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 @@ -84,6 +84,7 @@ public class ShellCommand implements Command, SessionAware { } public void start(final Environment env) throws IOException { + int exitStatus = 0; try { final Session session = sessionFactory.create(in, new PrintStream(out), new PrintStream(err)); for (Map.Entry<String,String> e : env.getEnv().entrySet()) { @@ -115,13 +116,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); } }
