簡體   English   中英

執行命令在Linux Centos上不起作用

[英]Exec ping command doesn't work on Linux Centos

美好的一天,

我正在使用一個系統來檢查某個IP地址是打開還是關閉。 我有一個MySQL DB,其數據庫表包含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
  ?>

但是,我總是得到2,而不是得到0(因為服務器已啟動)。

我已經替換了行$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); $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。

我缺少了一些東西,因為我根據以前的類似問題嘗試了此處建議的大多數解決方案,但是沒有用。

有沒有更好的方法來編碼這樣的系統?

謝謝你的協助。

您可能需要修改exec的語法:

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

另外,您可以包括-c或任何ping count選項...否則它將永久運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM