Я пытаюсь выполнить дочерний скрипт в bash через php shell_execute («$ command»), чье содержимое похоже на ниже.
$command=$_GET['command'];
$op2=shell_exec("$command");
echo "Command $command output is <pre> $op2 </pre>";
При отправке я получаю
Command /path/to/childscript some_pattern 20 username test output is BLANK
в основном мой детский сценарий создает сенсорный файл, затем отправляет письмо, затем переходит в спящий режим, а затем снова отправляет электронное письмо и затем
hour=`date +%T`
pattern=$1
stime=$2
user=$3
reason=$4
touch ${sdir}/s.${pattern}
echo -e "Snooze activated ! \n Sending mail, please wait."echo "Snooze started at: $hour for pattern= $pattern by $user for $stime seconds, reason = $4" | mutt [email protected] -s "active"( echo -e "Snooze was started at: $hour on pattern = $pattern by $user for $stime seconds, buffered contents are below:\n " >> ${sdir}buffer.${pattern} && sleep $stime && rm -rf ${sdir}s.${pattern} && mutt [email protected] -s "Snooze expire" < ${sdir}/buffer.${pattern} && rm -rf ${sdir}/buffer.${pattern})&
Так как я получаю пустым как мой вывод. Я попытался запустить этот скрипт, сделав более чистый родительский сценарий триггера
cat trigger
bash /path/to/childscript some_pattern 20 username testing &
echo "done"
И я просто вызываю этот триггерный скрипт при отправке, что дает мне некоторый прогресс
Command /path/to/trigger output is
done
Snooze activated !
Sending mail, please wait.
На этот раз я тоже получаю электронное письмо. Это означает, что мой дочерний скрипт действительно вызывается, но мои команды inside () не выполняются. Причина, по которой последняя команда написана таким образом, заключается в том, что мне нужно убедиться, что все эти команды выполняются только в последовательности. Это, безусловно, некоторая проблема с недоработкой / фоном, но я застрял, как заставить весь этот скрипт работать. Также я хотел бы запускать дочерний скрипт напрямую, а не вызывать триггер, который в свою очередь вызывает дочерний.
Мой код формы, хотя выглядит нормально, как показано ниже
<div id= "test" >
<form action="/path/to/test.php" >
<form method="post" action="" >
<b>Execute command:</b><br>
<input type="text" name="command">
<input type="submit" value="enter">
<br><br>
</form>
</div>
Я абсолютно новичок в веб-разработке и получил предупреждение, что это может быть фатальным, если кто-то выполнит какую-то случайную команду. Я согласен, но только уполномоченное лицо может получить доступ к этой странице. Также, если это невозможно, каков будет способ запустить этот скрипт с соответствующими проверками.
Задача ещё не решена.
Других решений пока нет …