PHP для запуска команды Bash - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь создать простую форму php, которая выполняет скрипт bash, который создает ключи на удаленном сервере.Я посмотрел здесь и нашел пару разных вариантов.Я смог получить некоторые результаты, используя shell_exec () и passthu (), но только для таких команд, как ls и echo.Проблема в том, что он не показывает мне результат.Я не думаю, что это выполняется.Я уверен, что скрипт bash работает, потому что я использую его ежедневно.

В идеале я хотел бы ввести значение, которое передается в скрипт, а затем отображать вывод. Снимок экрана формы

ФОРМА:

<form action="aws_create.php" method="post">
    <div class="form-group">
        <input class="form-control" name="aws_id" id="inputawsid" type="number" aria-describedby="emailHelp" placeholder="000000000000">
    </div>
    <input type="submit">

</form>

POST: aws_create.php

<code><?php
$awsid  = $_POST["aws_id"];
$output = passthru("/usr/local/bin/createkeys.sh $awsid");
echo "<pre>$output
";?>

1 Ответ

0 голосов
/ 11 мая 2018

void passthru (строка $ command [, int & $ return_var]) http://php.net/manual/en/function.passthru.php

Как вы можете видеть, passthru возвращает void, поэтому в вашей строке

$output = passthru("/usr/local/bin/createkeys.sh $awsid");

переменная $ outputникогда не будет вашего выхода.Вам нужно изменить его на что-то вроде:

$output="";
passthru("/usr/local/bin/createkeys.sh $awsid", $output);

Добавить неверный параметр команды, потому что вы даете createkeys.sh, строку "$ awsid" в качестве параметра, а не значениепеременной $ awsid.То же самое для

<code> echo "<pre>$output
";

вы повторяете строку. Попробуйте изменить ваш скрипт на что-то вроде:

<code>$awsid  = $_POST["aws_id"];
$output = "";
passthru("/usr/local/bin/createkeys.sh ".$awsid, $output);
echo "<pre>".$output."
";
...