使用PHP执行后台系统命令并捕获数组中的输出

使用PHP执行后台系统命令并捕获数组中的输出,php,Php,我正在尝试使用PHP/HTML ping一组IP <?php $ip=array("192.10.1.1","192.10.1.2","192.10.1.3","192.10.1.4","192.10.1.5") $list=count($ip); $instruction = ""; for ($x=0; $x<$list; $x++) { if ($x > 0) { $send2_bg =" & "; } else {

我正在尝试使用PHP/HTML ping一组IP

<?php
$ip=array("192.10.1.1","192.10.1.2","192.10.1.3","192.10.1.4","192.10.1.5")

$list=count($ip);
$instruction = "";

for ($x=0; $x<$list; $x++)
{
   if ($x > 0)
   {
      $send2_bg =" & ";
   }
   else
   {
     $send2_bg = "";
   }

$instruction = $instruction.$send2_bg."ping -c 2 -w 1 ". $ip[$x]." | grep -i received | awk '{print $4}'" ;
}

echo $instruction;
$result =exec($instruction);
 ?>
但是我没有得到输出,指令构造得很好,但是在exec()之后,输出就不是我所期望的了。

exec()
只是返回输出的最后一行

shell\u exec()
返回所有输出

exec()
只返回输出的最后一行


shell\u exec()
返回所有输出

尝试如下捕获输出:

exec($command, $host, $output);
print_r($output);

尝试按如下方式捕获输出:

exec($command, $host, $output);
print_r($output);

问题是您正在回显指令var,请查看该链接-


请参考参数输出,并回显该参数,而不是指令变量。

问题是您回显的是指令变量。请查看该链接-


请参考参数输出并回显该参数,而不是指令变量。

您不能使用HTML进行ping。@hjpotter92他在php中使用的exec可以ping。我调用php不仅仅是HTMLYou不能使用HTML进行ping。@hjpotter92他在php中使用的exec可以ping。我调用的php不仅仅是HTMLYes,它可以。但您只获得输出的最后一行。您可以通过使用shell_exec()或提供额外的$output变量来获得所有这些。您说得对,Joel,谢谢。我已经相应地编辑了我的答案。谢谢Alex。我使用shell_exec()获得了预期的输出。是的,确实如此。但您只获得输出的最后一行。您可以通过使用shell_exec()或提供额外的$output变量来获得所有这些。您说得对,Joel,谢谢。我已经相应地编辑了我的答案。谢谢Alex。我使用shell_exec()获得了预期的输出