Добрый день,Exec команда пинг не работает на Linux Centos
Я работаю в системе, которая проверяет, является ли определенный IP адрес вверх или вниз. У меня есть БД MySQL с таблицей, содержащей список IP addresses.I создали следующую функцию пинговать IP-адрес:
function pingAddress($ip) {
$result = exec('ping $ip -i 15 ', $outcome, $status);
if (0 == $status) {
echo 'Server UP ';
} else {
echo 'Server down ';
}
}
и в моем цикле, пока я следующее:
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)
).
Я использую Centos7 с установленным на нем apache.
У меня что-то не хватает, потому что я попробовал практически большинство предложенных здесь решений на основе предыдущих похожих вопросов, но это не сработало.
Есть ли лучший способ кода такой системы?
Благодарим за помощь.
Hi. Использование $ result = exec ('ping -i 15 -c 3'. $ Ip, $ result, $ status) и выполнение var_dump ($ status) дал мне результат int (2). Когда я меняю. до, перед $ ip var и var_dump ($ status), я получаю результат NULL. Я также попробовал $ result = exec ("ping -i 15 -c 3 2> & 1". $ Ip, $ result, $ status); но результатом var_dump ($ status) был int (2). –
Это может помочь узнать, что вы пытаетесь выполнить ping; возможно, в качестве теста попробуйте «google.com» для $ ip (попробуйте только первый блок кода). Если он работает, вы можете понять, что, вероятно, mysql не является правильным. –
У меня есть список локальных IP-адресов (например, 192.168.100.110). Из окон cmd или моего серверного терминала я могу успешно выполнить ping эти IP-адреса (потому что мой веб-сервер имеет IP-адрес в той же сети). В целях тестирования я пинговаю google dns 8.8.8.8, но результат тот же. –