如何使用JSch连接在单个会话中运行多个命令并读取其输出?

时间:2017-03-16 12:56:44

标签: java ssh jsch

我需要在远程虚拟机上一个接一个地执行一系列命令。我还想获得每个命令的输出。这将通过单个JSch会话完成。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

要执行多个命令,只需使用适当的服务器语法即可。大多数* nix服务器使用分号或双符号(具有不同的语义)。

请参阅Multiple commands using JSch

虽然如果您想要读取命令输出,您将有问题区别,其中一个命令的输出结束并且以下命令的输出开始。

然后最好在自己的“exec”频道中执行每个命令。单个SSH会话可以打开多个通道(按顺序或甚至并行)。

Channel channel1 = session.openChannel("exec");
((ChannelExec)channel1).setCommand(command1);
// ...

Channel channel2 = session.openChannel("exec");
((ChannelExec)channel2).setCommand(command2);
// ...

另见How to perform multiple operations with JSch