Commons exec提供了PumpStreamHandler,它将标准输出重定向到Java进程的标准输出。如何将命令的输出捕获到字符串中?
他是我发现的东西:
import java.io.ByteArrayOutputStream;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.Executor;
import org.apache.commons.exec.PumpStreamHandler;
public String execToString(String command) throws Exception {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
CommandLine commandline = CommandLine.parse(command);
DefaultExecutor exec = new DefaultExecutor();
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
exec.setStreamHandler(streamHandler);
exec.execute(commandline);
return(outputStream.toString());
}
问题内容: 我遇到了一个困扰我几天的问题。我在Python 2.7.10中使用了Paramiko模块,我想向Brocade路由器发出多个命令,但仅返回给定命令之一的输出,如下所示: 如果要打印完整的输出,它将包含发布到路由器的所有内容,但是我只想查看show命令的输出。 谁能解决这个问题? 我想问的最后一件事。我想过滤变量并检查是否出现诸如“ up”或“ down”之类的字符串,但是由于输出中的所
问题内容: 我正在尝试读取AT命令的结果(执行该命令以从控制台对GSM调制解调器执行各种操作)。我已经看到并使用Java OuputStream类成功进行了测试,以将AT命令的结果作为输出流获取,但是我要做的不是将结果作为输出流获取,而是获取到类中的变量(目前为String)中。 如果有可能喜欢 效果很好,怎么可能做这样的事情 我正在以这种方式尝试 但是为了获得结果,我想要像这样的字符串来获取at
问题内容: 我正在使用JSCH -SSH库在“ shell”通道中执行命令,但找不到找到两种方法的方法: 1)如何查找命令是否在远程unix box上完全执行? 2)如何在String中捕获命令输出,而不是在System.out控制台上打印它? 下面是我的代码片段,可以在system.out上显示shell命令输出 注意:我不想使用“ exec”通道,因为它为每个命令启动一个新进程,并且不记得已导
我使用JSCH-SSH库在“shell”通道中执行命令,但无法找到一种方法来做两件事:- 1)如何查找命令是否在远程unix box上完全执行? 2)如何在String中捕获命令输出,而不是在System.out控制台上打印? 下面是我的代码片段,它可以很好地在系统上显示shell命令输出。出来 注意:我不想使用“exec”通道,因为它为每个命令启动一个新进程,并且不记得导出的“session”变
问题内容: 我想将特定“ top”命令的输出写入文件。我做了一些谷歌搜索,发现可以通过使用以下命令来完成。 其中-n用于指定迭代次数,-b用于批处理模式。如果让top进行10次迭代,则效果很好。但是,如果我用Ctrl-C中断了命令的运行,则输出文件似乎为空。 我不会事先知道迭代次数,因此我需要手动中断它。如何在不指定迭代的情况下捕获文件top的输出? 我想精确使用的命令是 并在需要时将其断开。但这
问题内容: 我想编写一个函数,该函数将执行shell命令并以字符串形式返回其输出,无论是错误还是成功消息。我只想获得与命令行相同的结果。 能做到这一点的代码示例是什么? 例如: 问题答案: 这个问题的答案取决于你使用的Python版本。最简单的方法是使用以下功能: 该功能适用于仍在广泛使用的几乎所有版本的Python(2.7+)。2但对于较新的版本,不再推荐使用此方法。 现代版本的Python(3