Просмотр полной версии : Php скрипт ping
Может есть у кого мне надо чтобы скрипт пинговал IP
192.168.0.1 - 192.168.0.255 и например было так
(жёлтая или красная лампочка) Vasya 192.168.0.12 online
=) если скрипт лёгкий может кто напишит ? :D
Вот нашёл у себя какой-то пинг.
<?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";
?>
А какой именно тебе нужен постараюсь написать вечером.(щас гулять надо идти.)
<?php system('man ping'); ?>
естественно, для своей реализации нужны права root'а
Или юзать system() - на ping стоит суидный бит.
>>щас гулять надо идти
хорошая отмазка чтобы сувать сорц которые просто НЕ В ТЕМУ.
>>щас гулять надо идти
хорошая отмазка чтобы сувать сорц которые просто НЕ В ТЕМУ.
=)))) пингуем через http протокол =))) это сильно
ясно короче никто помочь не хочет
Как отметил некто 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);
}
//предварительно профильтроовав переменную ip
// флаг -с - количество попыток соединения
exec("ping -c 1 $ip > tmp.txt", $out);
//Вывод результатов пинга
readfile("tmp.txt");
ну и можно вставить куда-то unlink() если нужно
апач от рута не запускают. Это так, к сведению.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot