PDA

Просмотр полной версии : Php скрипт ping


XIII
15.10.2006, 17:47
Может есть у кого мне надо чтобы скрипт пинговал IP
192.168.0.1 - 192.168.0.255 и например было так
(жёлтая или красная лампочка) Vasya 192.168.0.12 online
=) если скрипт лёгкий может кто напишит ? :D

Ch3ck
15.10.2006, 17:57
Вот нашёл у себя какой-то пинг.
<?php
error_reporting(E_ALL);
echo "<h2>TCP/IP Connection</h2>\n";
/* Get the port for the WWW service. */
$service_port = getservbyname('www', 'tcp');
/* Get the IP address for the target host. */
$address = gethostbyname('www.example.com');
/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
} else {
echo "OK.\n";
}
echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result < 0) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
} else {
echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Reading response:\n\n";
while ($out = socket_read($socket, 2048)) {
echo $out;
}
echo "Closing socket...";
socket_close($socket);
echo "OK.\n\n";
?>

А какой именно тебе нужен постараюсь написать вечером.(щас гулять надо идти.)

nerezus
15.10.2006, 18:08
<?php system('man ping'); ?>

естественно, для своей реализации нужны права root'а
Или юзать system() - на ping стоит суидный бит.

ZaCo
15.10.2006, 18:58
>>щас гулять надо идти
хорошая отмазка чтобы сувать сорц которые просто НЕ В ТЕМУ.

Trinux
15.10.2006, 23:26
>>щас гулять надо идти
хорошая отмазка чтобы сувать сорц которые просто НЕ В ТЕМУ.
=)))) пингуем через http протокол =))) это сильно

XIII
16.10.2006, 21:25
ясно короче никто помочь не хочет

Pochka
16.10.2006, 21:31
Как отметил некто nerezus скрипт можно запускать только с рутовыми правами, а пример такого скрипта валялся всю жизнь на том же php.net:

function ping($host) {
$package = "\x08\x00\x19\x2f\x00\x00\x00\x00\x70\x69\x6e\x67";

/* create the socket, the last '1' denotes ICMP */
$socket = socket_create(AF_INET, SOCK_RAW, 1);

/* set socket receive timeout to 1 second */
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));

/* connect to socket */
socket_connect($socket, $host, null);

/* record start time */
list($start_usec, $start_sec) = explode(" ", microtime());
$start_time = ((float) $start_usec + (float) $start_sec);

socket_send($socket, $package, strlen($package), 0);

if(@socket_read($socket, 255)) {
list($end_usec, $end_sec) = explode(" ", microtime());
$end_time = ((float) $end_usec + (float) $end_sec);

$total_time = $end_time - $start_time;

return $total_time;
} else {
return false;
}

socket_close($socket);
}

EXSlim
16.10.2006, 21:51
//предварительно профильтроовав переменную ip
// флаг -с - количество попыток соединения
exec("ping -c 1 $ip > tmp.txt", $out);

//Вывод результатов пинга
readfile("tmp.txt");

ну и можно вставить куда-то unlink() если нужно

nerezus
16.10.2006, 22:19
апач от рута не запускают. Это так, к сведению.