Передать данные формы в качестве переменных в команду Docker - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь запустить ANS-контейнер через веб-страницу, но не нашел решения, только частично.

У меня есть index.html

<html>
<body>

<form action="adduser.php" method="get">
Server: <input type="text" value="<?php echo $name?>" name="name"><br>
<input type="submit">
</form>

</body>
</html>

adduser.php

<code><?php
  chdir("aatool"); 
  echo getcwd();
$hosts = $_POST["name"];
echo "$hosts";
// $hosts = escapeshellarg($hosts);
//echo ".escapeshellarg($hosts)";
$output = shell_exec('sudo docker run -i --network=host centos7-ansible ansible-playbook --private-key=ky.pem --extra-vars admin_password=test -e hosts=".escapeshellarg($hosts)." chpass.yml');
  echo "<pre>$output
";?>

Вывод веб-страницы:

/var/www/html/aatool PLAY RECAP *********************************************************************

Журналы Docker-контейнера:

PLAY RECAP *********************************************************************

Apache error_log:

[:error] [pid 40367] [client x.x.x.x:61812] PHP Notice:  Undefined index: name in /var/www/html/adduser.php on line 4, referer: http://x.x.x.x/

Если я передаю значение hosts напрямую, например hosts = all, все работает отлично, но если я пытаюсь получить значение из формы php, оно не хочет работать. Я пробовал все, чтомог найти, и этот код дал мне лучший результат, но все еще не работает. Я надеюсь, что я найду некоторую помощь здесь

Спасибо.

1 Ответ

0 голосов
/ 27 января 2019

Ваша ФОРМА отправляется методом GET, но ваш код проверяет переменную $ _POST. Попробуйте установить хосты из $ _GET или измените FORM на POST.

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