Думаю, вы могли бы попробовать что-то вроде этого. Будьте осторожны, я не проверял этот код.
$mainpart = "192.168.1.";
$errors = array();
foreach(range(1, 254) as $ip) {
$adr = $main . $ip;
$msg = exec("ping {$adr} blablabla");
if($msg == "bad error") {
$errors[$adr] = $msg;
}
}
Может потребоваться какое-то время ожидания для каждого цикла. В конце вы можете перебрать массив ошибок, чтобы обработать каждую данную ошибку. Если возможно, я бы хотел использовать fsockopen для проверки портов вместо команд ping, как рекомендует Osaman.