ci tengo a precisare che è un metodo molto rudimentale, probabilmente trovi delle classi già fatte su phpclasses.

Comunque funge:
codice:
<?php
exec("ping -c 1 192.168.1.3 ",$result);
echo "<pre>";
print_r($result);
echo "</pre>";
foreach($result as $key => $linea) {
  if(strpos($linea,"statistics")) {
    if(strpos($result[$key+1],"0 received")) {
      echo "non risponde al ping";
    } else {
      echo "risponde al ping";
    }
  }
}
echo "
";
echo "
";
echo "
";
$result=array();
exec("ping -c 1 10.0.0.1",$result);
echo "<pre>";
print_r($result);
echo "</pre>";
foreach($result as $key => $linea) {
  if(strpos($linea,"statistics")) {
    if(strpos($result[$key+1],"0 received")) {
      echo "non risponde al ping";
    } else {
      echo "risponde al ping";
    }
  }
}
?>
Sono 2 blocchi perchè ho provato un ip che risponde e uno no:

Il risultato è il seguente:
codice:
Array
(
    [0] => PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
    [1] => 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.040 ms
    [2] => 
    [3] => --- 192.168.1.3 ping statistics ---
    [4] => 1 packets transmitted, 1 received, 0% packet loss, time 0ms
    [5] => rtt min/avg/max/mdev = 0.040/0.040/0.040/0.000 ms
)

risponde al ping


Array
(
    [0] => PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
    [1] => 
    [2] => --- 10.0.0.1 ping statistics ---
    [3] => 1 packets transmitted, 0 received, 100% packet loss, time 0ms
    [4] => 
)

non risponde al ping
ciao