Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php运行包含子shell命令的bash脚本_Php_Bash_Shell Exec_Subshell - Fatal编程技术网

从php运行包含子shell命令的bash脚本

从php运行包含子shell命令的bash脚本,php,bash,shell-exec,subshell,Php,Bash,Shell Exec,Subshell,我试图通过php shell_execute$命令在bash中执行一个子脚本,其内容如下所示 $command=$_GET['command']; $op2=shell_exec("$command"); echo "Command $command output is <pre> $op2 </pre>"; 基本上,我的子脚本创建一个触摸文件,然后发送邮件,然后睡觉,然后再次发送电子邮件,然后rm触摸文件 我只是在提交时调用这个触发器脚本,这给了我一些进展 <

我试图通过php shell_execute$命令在bash中执行一个子脚本,其内容如下所示

$command=$_GET['command'];
$op2=shell_exec("$command");
echo "Command $command output is <pre>  $op2 </pre>";
基本上,我的子脚本创建一个触摸文件,然后发送邮件,然后睡觉,然后再次发送电子邮件,然后rm触摸文件

我只是在提交时调用这个触发器脚本,这给了我一些进展

<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>
这次我也收到了一封电子邮件。这意味着我的子脚本确实会被调用,但里面的命令不会被执行。最后一个命令是这样写的,原因是我需要确保所有这些命令只按顺序出现。这当然是一些子shell/后台问题,但我一直在思考如何让整个脚本正常工作。另外,我希望直接运行子脚本,而不是调用触发器,触发器反过来调用子脚本

我的表单代码,虽然看起来不错,但如下所示


我对WebDEVL绝对是新手,有人警告说,如果有人执行一些随机命令,这可能是致命的。我同意,但只有授权人员才能访问此页面。此外,如果无法执行此操作,那么通过适当的检查运行此脚本的方法是什么。

不要在命令周围加上反勾号,并且不要在后台运行带有&.的命令。您不应该在不转义输入的情况下将用户提供的内容传递给shell_exec或命令行函数…@Barmar U是指触发器脚本或子脚本中的&?而且背勾也不存在,可能是我做的错了。你不应该在任何地方使用。如果您在后台运行命令,主脚本不会等到它完成后再将结果返回到PHP。@Barmar,我删除了所有&,仍然没有帮助
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 a@b.com -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 a@b.com -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.
<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>