PHP скрипт, ping

Discussion in 'PHP' started by MisteriX, 18 Dec 2007.

  1. MisteriX

    MisteriX Banned

    Joined:
    13 Dec 2007
    Messages:
    26
    Likes Received:
    7
    Reputations:
    0
    Помогите написать скрипт на ПХП, каторый будет выполнять следующее:
    Пинговать определенный ip адрес и если есть ответ то возвращать true , а если ответа нет - false


    PS: Если кто знает как реализовать это но других языках, то выложите исходники.... а яж сам попробую зделать на пхп, мне важно понять саму систему...
     
    #1 MisteriX, 18 Dec 2007
    Last edited: 18 Dec 2007
    1 person likes this.
  2. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    PHP:
    <?php 
    echo
    <html> 
    <head> 
    <title>Пинг на IP</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
    </head> 
    <body> 
    <h2></h2> 
    <br /> 
    <form method="post" action="#"> 
    <input name="ip" type="text"> <b>Введите IP</b><br> 
    <input type="submit"> 
    </form> 
    <br> '
    ;

    if (
    $_POST["ip"]) { 
    $ip $_POST["ip"]; 

    if (
    preg_match('/ |\|/'$ip)){ 
    echo 
    "Ввели недопустимые знаки"
    die; 

    $p "ping -c 3 $ip"//для *nix
    //$p = "ping -n 3 $ip"; //Windows 
    $p preg_replace('/\n/',"<br>\n",$p); 

    $ft ="Вернуть данные при вызове <b>ping</b>:<br> $p</body></html>";  
    echo 
    $ft
    ?>
    типа того
     
    1 person likes this.
  3. MisteriX

    MisteriX Banned

    Joined:
    13 Dec 2007
    Messages:
    26
    Likes Received:
    7
    Reputations:
    0
    чет не фурычит.... но идею понял... буду думать! СПС Большое
     
  4. MisteriX

    MisteriX Banned

    Joined:
    13 Dec 2007
    Messages:
    26
    Likes Received:
    7
    Reputations:
    0
    Только вот.... там нада както через системную функцию system() нужно делать.... от того что просто написать
    ничего не выполниться
     
  5. MisteriX

    MisteriX Banned

    Joined:
    13 Dec 2007
    Messages:
    26
    Likes Received:
    7
    Reputations:
    0
    Вот както так... но всегда true возвращает...

    PHP:
    <?php  
    $p 
    system('ping 192.168.50.1');
    if(
    $p

    echo(
    "Есть ответ"); 
    }
    else
    {
     echo(
    "Хост не активен"); 
    }
    ?> 
     
  6. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    хм, ну попробуй:
    Code:
    C:\Documents and Settings\Snak3>ping lollll.ru
    При проверке связи не удалось обнаружить узел lollll.ru. Проверьте имя узла и по
    вторите попытку.
    и
    Code:
    C:\Documents and SettingsSnak3>ping antichat.ru
    
    Обмен пакетами с antichat.ru [89.108.80.80] по 32 байт:
    
    Превышен интервал ожидания для запроса.
    Превышен интервал ожидания для запроса.
    Превышен интервал ожидания для запроса.
    Превышен интервал ожидания для запроса.
    
    Статистика Ping для 89.108.80.80:
        Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь),
    
    C:\Documents and Settings\Snak3>
    Видишь в чем разница? пробуй после с, допустим, началом вхождения, если ищет "обмен пакетами" ну или и т.д. по длинне например и т.д., вариантов множество, парсить нужно
     
  7. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90

    этот скрипт на компе валялся, может и сам его писал)))) хз))
     
  8. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    Code:
    perldoc Net::Ping[COLOR=White]
    "исходники" _http://perldoc.perl.org/Net/Ping.html[/COLOR]
    
     
    1 person likes this.
  9. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    to MisteriX
    В книге Фролова ПХП для хакера (как всегда оригинальное название :) ) есть робота с сокетами и там он пишет как написать сканер портов и ФТП-клиент. Думаю будет интересно почитать
     
  10. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
    <?php
        $unix      
    =  0;
        
    $register_globals = (bool) ini_get('register_gobals');
        
    $system ini_get('system');
        
    $unix = (bool) $unix;

        if(
    $register_globals)
        {
               
    $ip getenv(REMOTE_ADDR);
               
    $self $PHP_SELF;
        }
        else
        {
           
    $submit $_GET['submit'];
           
    $count  $_GET['count'];
           
    $host   $_GET['host'];
           
    $ip     $_SERVER['REMOTE_ADDR'];
           
    $self   $_SERVER['PHP_SELF'];
        }

        if (
    $submit == "Ping!")
        {
            
    $count 4;
            
    $host    preg_replace ("/[^A-Za-z0-9.-]/"""$host);
            
    $count    preg_replace ("/[^0-9.]/"""$count);
            echo 
    '<body bgcolor="#FFFFFF" text="#000000"></body>';
            echo(
    "Ping Output:<br>");
            echo 
    '<pre>';

            if (
    $unix)
            {
               
    system ("ping -c$count -w$count $host");
               
    system("killall ping");
            }
            else
            {
               
    system("ping -n $count $host");
            }
            echo 
    '</pre>';
        }
        else
        {
            echo 
    '<body bgcolor="#FFFFFF" text="#000000"></body>';
            echo 
    '<p><font size="2">Your IP is: '.$ip.'</font></p>';
            echo 
    '<form methode="post" action="'.$self.'">';
            echo 
    '   Enter IP or Host <input type="text" name="host" value="'.$ip.'"></input>';
            echo 
    '   Enter Count <input type="text" name="count" size="2" value="4"></input>';
            echo 
    '   <input type="submit" name="submit" value="Ping!"></input>';
            echo 
    '</form>';
            echo 
    '<br><b>'.$system.'</b>';
            echo 
    '</body></html>';
        }
    ?>
     
    3 people like this.
  11. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    И хрен ты напишешь пинг на пхп. Это невозможно.

    Теоретическая возможность, кстати, есть. Через сырые сокеты. И вебсервер с правами рута, что уже полный бред.
     
  12. MisteriX

    MisteriX Banned

    Joined:
    13 Dec 2007
    Messages:
    26
    Likes Received:
    7
    Reputations:
    0
    2 Isis
    Скрипт харош... ну идея не в этом!
    Кароч конечный результат работы скрипта должен показывать слудующее:
    Тоесть ты запускаеш скрипт и оно показует кто в твоеей подсети онлайн, кто офф
    Для этого оно должно не просто пинговать, а возвращать true или false, тоесть мне самим пинги не важны главное узнать этот ip щас занят или нет....

    Но я придумал идею круче пинга, кароч через сокеты конектиться на 445 порт (Mirosof-DS), так как если ждать выполнения каждого пинга пройдет очень много времени... Вобщем как закончу, то выложу исходник.
     
    1 person likes this.
  13. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    Вот чисто кусок кода, который будет показывает какие есть ИП на искомой странице, пригодться может....
    PHP:
    <?  
    $timelim=1///лимит времени в секундах допустимого бездействия пользоваеля  
    session_id("hfJKcbJssJ");  
    session_start();  
    $f=1;  
    if(!isset(
    $_SESSION['kolvo']))   
        
    $_SESSION['kolvo']=0;  
    if(
    $_SESSION['kolvo']>0)  
    {  
      for(
    $i=0;$i<$_SESSION['kolvo'];$i++)  
        if(
    $_SESSION['users']['ip'][$i]==$_SERVER['REMOTE_ADDR'])  
           {  
             
    $_SESSION['users']['date'][$i]=date('U');  
             
    $f=0;  
             break;  
           }  

    if(
    $_SESSION['kolvo']>0)        
    for(
    $i=0;$i<$_SESSION['kolvo'];$i++)  
       if(
    date('U')-$_SESSION['users']['date'][$i]>$timelim)  
       { for(
    $j=$i;$j<$_SESSION['kolvo']-1;$j++)  
            {  
             
    $_SESSION['users']['date'][$j]=$_SESSION['users']['date'][$j+1];  
             
    $_SESSION['users']['ip'][$j]=$_SESSION['users']['ip'][$j+1];  
            }  
         
    $_SESSION['kolvo']--;  
        }  
    }  
    if(
    $f)  
    {  
      
    $_SESSION['users']['ip'][$_SESSION['kolvo']]=$_SERVER['REMOTE_ADDR'];  
      
    $_SESSION['users']['date'][$_SESSION['kolvo']]=date('U');  
      
    $_SESSION['kolvo']++;  
    }  
    print
    $_SERVER['REMOTE_ADDR'];  
    ?>
     
  14. p0is0n

    p0is0n New Member

    Joined:
    8 Jun 2007
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    Уверен?
     
  15. ZEXEL

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

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    Isis у меня выдает ошибку
    Warning: system() has been disabled for security reasons in /home/czexel/public_html/z.php on line 37

    что зделать надо что бы работало дальше нормально ?
     
  16. NNNS

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

    Joined:
    26 May 2007
    Messages:
    44
    Likes Received:
    28
    Reputations:
    -5
    zexel, ничего не сделаешь. Хостер отключил эту функцию на сервере
     
  17. ZEXEL

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

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    А вообще хостера попросить мона что бы функцию ету включил или ета как бы функция что опасна для их системы ?
     
  18. AFoST

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

    Joined:
    28 May 2007
    Messages:
    588
    Likes Received:
    485
    Reputations:
    176
    Ну system() дает юзеру командную строку в пользование :) Конечно опасно. Конечно можешь попросить :)
     
  19. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    Попросить то можно, но врядли он включит
    узнай, мож другие какие нить функции включены passthru, exec,popen, proc_open... хотя врядли
    если без пинга этого никак и php не принципиально важен, и есть поддержка cgi-сценариев (папка cgi-bin) то пользуй perl например, мдя... слишком много условий
     
    #19 Scipio, 10 Jan 2008
    Last edited: 10 Jan 2008
  20. demko

    demko New Member

    Joined:
    19 Nov 2009
    Messages:
    13
    Likes Received:
    2
    Reputations:
    1
    PHP:
         <?php

          $urls 
    file ("urls.txt");

          for (
    $x=0;$x<count($urls);$x++)

          {

          
    $url trim ($urls[$x]);

      if (
    eregi("Thanks for the ping."file_get_contents("http://blogsearch.google.com/ping?url=".$url)))

          {

          echo 
    $url." - added\r\n";

          } else {

          echo 
    $url." - not added\r\n";

          }

          }

          
    ?>
    Интересный скриптик по пингу сайтов_))