2013-04-17 3 views
1

У меня есть скрипт, который требует ввода данных пользователей («Пожалуйста, выберите Y/N:» и т.д.)Выполнить интерактивный скрипт через апач

Я хотел бы, чтобы это было выполнено через веб-страницу.

Любые идеи о том, как я могу это сделать? Я пробовал php shell_exec ... но он просто выполняет команды и не запрашивает ввода.

Не уверен, что это возможно ... Но любая помощь будет принята с благодарностью.

Приветствия

+1

Невозможно ответить на ваш вопрос, который вы удалили, но: [Percona имеет плагин, за который вам не нужно платить] (http://www.percona.com/doc/percona-pam-for-mysql/ intro.html) – Wrikken

+0

Спасибо @Wrikken :) – bsmoo

ответ

1

Обычно пользовательский ввод будет использовать HTML/Javascript. Затем ввод отправляется в URL-адрес (например, сценарий PHP), который затем обрабатывает ввод и выполняет скрипт.

0

enter code here Проверьте скрипт, чтобы увидеть, есть ли какие-либо флаги, чтобы заставить скрипт работать без ввода пользователем. Обычно вы можете вызвать помощь, написав что-то вроде:

yourscript /h 

или

yourscript --help 

Там может быть флаг для этого. Найдите информацию о «силе» или «подсказке» в справке. Если вы не можете воспользоваться, если вы работаете в среде Linux/Unix, создайте новый скрипт, который отправит ввод другому скрипту. Не уверен, что это работает на Windows.

Вот очень простой пример:

echo y | yourscript 
0

Единственный способ вы можете сделать это воссоздает конфигурации часть инструмента CLI в виде HTML, например:

<form method="POST" action="/foo.php"> 
    Please select: 
     <input type="radio" name="yesno" value="1">yes 
     <input type="radio" name="yesno" value="0">no 
    Some other option: 
     <input type="text" name"someoption"> 
</form> 

После этого вы необходимо создать foo.php, который будет обрабатывать входную часть с Heredoc, например:

<?php 
    $aData = some_validation_and_data_preparation_method($_POST); 

    $sCmd = implode("\n", $aData); 

    $sOutput = shell_exec("./some_cli_tool << EOF 
{$sCmd} 
EOF"); 

    print $sOutput; 

Обратите внимание на отсутствие отступов на фактическом HEREDOC (т. между маркерами EOF).

Смежные вопросы