Команда PHP Exec - Как передать ввод в ряд вопросов - PullRequest
6 голосов
/ 29 декабря 2010

У меня есть программа на моем Linux-сервере, которая задает одну и ту же серию вопросов при каждом запуске, а затем выдает несколько строк. Моя цель - автоматизировать ввод и вывод с помощью php-скрипта.

Программа не предназначена для приема ввода в командной строке. Вместо этого программа задает вопрос 1 и ожидает ответа с клавиатуры, затем программа задает вопрос 2 и ожидает ответа с клавиатуры и т. Д.

Я знаю, как записать вывод в массив, написав: $ out = array (); Exec ( "мой / путь / программа", $ из);

Но как мне обработать вход ? Предположим, программа задает 3 вопроса и правильные ответы: осталось 120 n Какой самый простой способ использовать php для передачи этого ввода в программу? Могу ли я сделать это как-нибудь в строке exec?

Я не php noob, просто мне никогда не приходилось делать это раньше. Увы, мой поиск в Google идет по кругу.

Ответы [ 3 ]

4 голосов
/ 29 декабря 2010

Прежде всего, просто чтобы вы знали, что вы пытаетесь изобрести велосипед.Что вы действительно ищете, так это Ожидайте (1) , утилиту командной строки, предназначенную для выполнения именно того, что вы хотите, без использования PHP.

Однако, если вы действительно хотитенаписать свой собственный код PHP, который нужно использовать proc_open.Вот несколько хороших примеров кода при чтении из STDOUT и записи в STDIN дочернего процесса с использованием proc_open:

Наконец, есть также модуль Expect PECL для PHP.

Надеюсь, это поможет.

0 голосов
/ 29 декабря 2010
$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);
0 голосов
/ 29 декабря 2010

Просто добавьте аргументы в строку exec.

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

... но не забудьте применить escapeshellarg() к каждому аргументу! В противном случае вы уязвимы для введенного вредоносного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...