2011-12-15 116 views
0

我编写了一个可以远程执行系统命令的小型客户机/服务器应用程序。当你只需要读取它们的输出时,它可以很好地处理非交互式程序。但是,是否有可靠的方法将用户输入发送到流程开始如果需要它?我怎么才能找出一个过程是否提示输入?远程执行交互式CLI程序

+0

你看着使用SSH? (通过像jSSH这样的Java库)它看起来像你试图做的是非常相似。也许你可以从它的工作原理中获得一些想法(或者仅仅使用它,因为你不需要在服务器上安装Java并且它工作) – 2011-12-15 08:34:57

+0

我并不真的需要SSH,它对于简单系统来说看起来太复杂了,我有。我想用标准的Java库来实现它(如果可能的话)。 – Ree 2011-12-15 08:44:31

回答

1

看看'expectj'。这是http://en.wikipedia.org/wiki/Expect

http://expectj.sourceforge.net/

实例的端口:

// Create a new ExpectJ object with a timeout of 5s 
ExpectJ expectinator = new ExpectJ(5); 

// Fork the process 
Spawn shell = expectinator.spawn("/bin/sh"); 

// Talk to it 
shell.send("echo Chunder\n"); 
shell.expect("Chunder"); 
shell.send("exit\n"); 
shell.expectClose();