Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Php скрипт ping (https://forum.antichat.xyz/showthread.php?t=25420)

XIII 15.10.2006 17:47

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

Ch3ck 15.10.2006 17:57

Вот нашёл у себя какой-то пинг.
PHP код:

 <?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_INETSOCK_STREAMSOL_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$instrlen($in));
echo 
"OK.\n";
echo 
"Reading response:\n\n";
while (
$out socket_read($socket2048)) {
    echo 
$out;
}
echo 
"Closing socket...";
socket_close($socket);
echo 
"OK.\n\n";
?>

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

nerezus 15.10.2006 18:08

PHP код:

<?php system('man ping'); ?>

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

ZaCo 15.10.2006 18:58

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

Trinux 15.10.2006 23:26

Цитата:

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

=)))) пингуем через 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

апач от рута не запускают. Это так, к сведению.


Время: 12:42