Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java运行时执行基于模式的执行终端命令_Java - Fatal编程技术网

使用java运行时执行基于模式的执行终端命令

使用java运行时执行基于模式的执行终端命令,java,Java,我在linux终端上安装了一个终端客户端实用程序,使我能够与外部远程设备进行通信。如何使用java运行时执行这些东西 例如,如果我想在mongodb安装上执行查询,我可以打开一个终端并通过执行“mongo--port 27017”命令移动到mongo客户端模式,然后连接到mongo服务器,然后从终端窗口的mongo客户端模式执行命令。如何从java运行时执行此操作 [akhilv@dc1devpavxsrv01 bin]$ ./mongo --port 27017 MongoDB shell v

我在linux终端上安装了一个终端客户端实用程序,使我能够与外部远程设备进行通信。如何使用java运行时执行这些东西

例如,如果我想在mongodb安装上执行查询,我可以打开一个终端并通过执行“mongo--port 27017”命令移动到mongo客户端模式,然后连接到mongo服务器,然后从终端窗口的mongo客户端模式执行命令。如何从java运行时执行此操作

[akhilv@dc1devpavxsrv01 bin]$ ./mongo --port 27017
MongoDB shell version: 2.6.5
connecting to: 127.0.0.1:5000/test
rpset:PRIMARY> use quartz
switched to db quartz
rpset:PRIMARY> show collections
quartz__calendars
quartz__jobs
quartz__locks
quartz__triggers
system.indexes
rpset:PRIMARY>
rpset:PRIMARY> exit
bye
[akhilv@dc1devpavxsrv01 bin]$
以上是我希望在运行时执行的实际操作。我首先从原始终端执行命令./mongo--port 27017,然后进入mongo客户机模式。然后我执行use quartz、show collections等,这些只有我的mongo客户端模式才能理解

我正在尝试执行“use quartz”和“show collections”命令,以便使用运行时从java代码执行这些命令。我对运行时不是很具体,但需要在java中使用一些东西,因为我不能从mongo或任何其他供应商那里获得客户机库


请帮助

通过从java派生外部进程并捕获其I/O通道,可以做到这一点。因此,基本上从java中,您必须调用shell命令、campture并解析其输出。请参阅有关
过程
类的一些详细信息

您最感兴趣的方法是
waitFor()
getInputStream()
getOutputStream()

这与android应用程序使用root访问的方式非常相似——相同的方式:)

1。你不太可能做到。您不会告诉任何关于此实用程序的真正内容。链接?我已经详细修改了原始帖子。好吧,如果是针对mongodb的,为什么不直接使用Java API而不是将其委托给shell呢?使用mongo肯定是可行的,但我没有在这里使用库的奢侈。这就是问题所在。是否可以使用同一个ProcessBuilder执行多个命令,因为我的情况是,只有在mongo客户端模式下,运行时才能理解mongo命令。。我想这也意味着所有的命令都必须作为同一个进程的一部分执行。据我所知,您需要在mongo控制台中,所以构建适当的进程,运行它并捕获输入和输出。这将是mongo控制台上的一种覆盖形式。