2016-11-03 104 views
0

美好的一天,在Linux Centos上執行ping命令不起作用

我正在檢查某個IP地址是否啓動或關閉。我有一個MySQL數據庫包含已經創建了下面的函數來ping IP地址,IP addresses.I列表的表:

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); OR $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))。

我使用Centos7一個安裝了阿帕奇。

我是失去了一些東西,因爲我已經嘗試了幾乎大部分這裏建議基於以前類似的問題的解決方案,但沒有奏效。

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

感謝您的協助。

回答

2

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

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

此外,您可能包括-c或任何你平安count選項...否則將永遠運行下去。

+0

嗨。使用$結果= EXEC( '平-i 15 -c 3'。$ IP,$結果,$狀態),並做了後續代碼var_dump($狀態)給了我一個int結果(2)。當我改變。到$ ip var之前,並做一個var_dump($狀態)我去一個NULL結果。我也試過$ result = exec(「ping -i 15 -c 3 2>&1」。$ ip,$ outcome,$ status);但var_dump($ status)的結果是int(2)。 –

+0

它可能有助於知道你想要ping什麼;也許作爲一個測試嘗試'谷歌.com'爲$ ip(嘗試只是第一塊代碼)。如果它工作,那麼你可以認爲它可能是MySQL不正確。 –

+0

我有一個本地IP地址列表(例如192.168.100.110)。從Windows cmd或我的服務器終端上,我可以成功地ping通這些IP地址(因爲我的Web服務器在同一網絡中有一個IP地址)。爲了測試的目的,我ping的谷歌DNS 8.8.8.8,但結果是一樣的。 –