如何使用Java执行多个unix命令并捕获单个输出或错误(如果有)

时间:2017-12-08 13:11:11

标签: java unix ssh jsch

我有这个要求,我需要执行一个unix命令列表,然后对每个命令我应该存储它的结果。 例如。 命令 - cd dir1,pwd,ls

我的输出应包含 -

cd dir1- PWD-DIR1 ls-a,b,c,d(假设它们出现在dir1目录下)

我尝试使用JSch库并尝试使用shell和exec通道类型。

但这不允许我发送命令并读取输出,然后发送另一个并读取输出。

我现在所做的是 使用exec在每个命令后发送所有命令和echo命令,然后读取该命令输出的回显。

使用shell我发送命令,但它等待退出命令,否则它会进入无限等待。

另外,我们如何才能获得单个命令的错误

请建议是否有任何方法可以实现这一目标。

1 个答案:

答案 0 :(得分:0)

如果命令是独立的,请为每个命令打开一个新的“exec”通道。

如果后面的命令依赖于以前的命令,则没有很好的解决方案。

你实际上已经找到了最好的方法:

  

我现在所做的是使用exec在每个命令之后发送所有命令和echo命令,然后读取该命令输出的回显。

另见JSch Shell channel execute commands one by one testing result before proceeding