Exec ping命令不适用于Linux Centos

时间:2016-11-03 07:42:15

标签: php linux centos exec ping

美好的一天,

我正在研究一个检查某个IP地址是启动还是关闭的系统。我有一个MySQL数据库,其中包含一个包含IP地址列表的表。我创建了以下函数来ping IP地址:

function pingAddress($ip) {

        $result = exec('ping $ip -i 15 ', $outcome, $status);

        if (0 == $status) {
            echo 'Server UP ';
        } else {
            echo 'Server down ';
        }
}

在我的while循环中我有以下内容:

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
   ?>
   <tr>
       <td><?php pingAddress($row['client_ip_address']); ?></td>
   </tr>

   <?php
   } //end while
  ?>

然而,不是得到0(因为服务器已启动),我总是得到2。

我已更换了行$result = exec('ping $ip -i 15 ', $outcome, $status);$pingresult = system("ping -n 3 $ip 2>&1", $outcome, $status);$pingresult = shell_exec('/bin/ping -qc 1 '.$ip.' | awk -F/ \'/^rtt/\'', $result); OR ('ping $ip -i 15 ', $outcome, $status); 结果仍然没有改变。我得到一个空数组(当我var_dump($status)var_dump($outcome)时)。

我正在使用安装了apache的Centos7。

我遗漏了一些东西,因为我根据之前的类似问题尝试了几乎所有建议的解决方案但是它没有用。

这样的系统有更好的代码吗?

感谢您的协助。

1 个答案:

答案 0 :(得分:2)

您可能需要修改private static BufferedReader br = null; public static void main(String[] args) throws IOException, FileNotFoundException { br = new BufferedReader(new FileReader("pageRefString.txt")); 的语法:

exec

此外,您可以包含$result = exec('ping -i 15 -c 3 ' . $ip, $outcome, $status); 或任何ping -c选项...否则它将永久运行。