2011-12-15 91 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();