使用Karaf + SSH + Java执行命令

时间:2016-03-08 17:59:28

标签: java ssh apache-karaf karaf sshd

我正在尝试从Java连接到SSH的karaf(如文档中所示),事实是,我无法从我的java代码执行任何命令。

我要做的是停止并从java启动捆绑包。

我已经尝试过使用createExecChannel和createShellChannel方法。但它们都不起作用,我不确定我是否正确行事。我跟着文档连接,但我找不到我需要做的好例子(或类似的东西)。

这就是我的尝试:

public static void main(String[] args) throws Exception {
        ...
        SshClient client = null;
        try {
            client = SshClient.setUpDefaultClient();
            client.start();
            ConnectFuture future = client.connect(user, host, port);
            future.await();
            ClientSession session = future.getSession();
            session.addPasswordIdentity(password);


            final ClientChannel channel = session.createShellChannel();
            channel.setOut(System.out);
            channel.setErr(System.err);
            channel.open();

            executeCommand(channel, "stop -f 44");

            List<ClientChannelEvent> evs = new ArrayList<ClientChannel.ClientChannelEvent>();
            evs.add(ClientChannelEvent.CLOSED);

            channel.waitFor(evs, 0);

            session.close(false);
            client.stop();

        } catch (Throwable t) {
            ...
        } finally {
            ...
        }

    }
private static void executeCommand(final ClientChannel channel,
        final String command) throws IOException {
    final InputStream commandInput = new ByteArrayInputStream(
            command.getBytes());
    channel.setIn(new NoCloseInputStream(commandInput));
}

我没有收到任何错误,但命令不执行。

有人可以帮忙吗?

0 个答案:

没有答案