我正在尝试从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));
}
我没有收到任何错误,但命令不执行。
有人可以帮忙吗?