Php скрипт ping

Discussion in 'PHP' started by XIII, 15 Oct 2006.

  1. XIII

    XIII Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    109
    Likes Received:
    17
    Reputations:
    -1
    Может есть у кого мне надо чтобы скрипт пинговал IP
    192.168.0.1 - 192.168.0.255 и например было так
    (жёлтая или красная лампочка) Vasya 192.168.0.12 online
    =) если скрипт лёгкий может кто напишит ? :D
     
  2. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,192
    Reputations:
    430
    Вот нашёл у себя какой-то пинг.
    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";
    ?> 
    А какой именно тебе нужен постараюсь написать вечером.(щас гулять надо идти.)
     
    1 person likes this.
  3. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    PHP:
    <?php system('man ping'); ?>
    естественно, для своей реализации нужны права root'а
    Или юзать system() - на ping стоит суидный бит.
     
    1 person likes this.
  4. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    >>щас гулять надо идти
    хорошая отмазка чтобы сувать сорц которые просто НЕ В ТЕМУ.
     
  5. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    =)))) пингуем через http протокол =))) это сильно
     
    _________________________
  6. XIII

    XIII Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    109
    Likes Received:
    17
    Reputations:
    -1
    ясно короче никто помочь не хочет
     
    1 person likes this.
  7. Pochka

    Pochka Banned

    Joined:
    26 Nov 2005
    Messages:
    27
    Likes Received:
    7
    Reputations:
    -2
    Как отметил некто 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);
    }
     
    1 person likes this.
  8. EXSlim

    EXSlim Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    73
    Likes Received:
    20
    Reputations:
    18
    //предварительно профильтроовав переменную ip
    // флаг -с - количество попыток соединения
    exec("ping -c 1 $ip > tmp.txt", $out);

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

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

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    апач от рута не запускают. Это так, к сведению.