PHP Exec命令 - 如何将输入传递给一系列问题

时间:2010-12-29 01:10:09

标签: php exec

我的linux服务器上有一个程序,每次执行时会询问同一系列的问题,然后提供几行输出。我的目标是使用php脚本自动化输入和输出。

该程序不是为了接受命令行上的输入而设计的。相反,程序询问问题1并等待键盘的答案,然后程序询问问题2并等待键盘的答案等。

我知道如何通过编写来捕获数组中的输出: $ out = array(); EXEC( “我的/路径/程序”,$出);

但是如何处理输入? 假设程序询问3个问题,有效答案是:左120 n 使用php将该输入传递给程序的最简单方法是什么? 我能以某种方式在exec线上做到吗?

我不是一个PHP菜鸟,但以前从未需要这样做。 唉,我的谷歌搜索正在进行。

3 个答案:

答案 0 :(得分:4)

首先,只是为了让你知道你正在尝试重新发明轮子。您真正需要的是expect(1),它是一个命令行实用程序,旨在完全按照您的意愿执行,而不涉及PHP。

但是,如果您真的想编写自己的PHP代码,则需要使用proc_open。以下是从STDOUT读取并使用proc_open写入子进程的STDIN的一些很好的代码示例:

最后,PHP还有一个Expect PECL module

希望这有帮助。

答案 1 :(得分:0)

只需将参数添加到exec行。

exec("/path/to/programname $arg1 $arg2 $arg3");

...但不要忘记在每个论点上都应用escapeshellarg()!否则,您很容易被注入恶意代码。

答案 2 :(得分:0)

$out = array();
//add elements/parameters/input to array
string $execpath = "my/path/program ";
foreach($out as $parameter) {
  $execpath += $parameter;
  //$execpath += "-"+$execpath; use this if you need to add a '-' in front of your parameters.
}
exec($execpath);