Помогите написать скрипт на ПХП, каторый будет выполнять следующее: Пинговать определенный ip адрес и если есть ответ то возвращать true , а если ответа нет - false PS: Если кто знает как реализовать это но других языках, то выложите исходники.... а яж сам попробую зделать на пхп, мне важно понять саму систему...
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; ?> типа того
Только вот.... там нада както через системную функцию system() нужно делать.... от того что просто написать ничего не выполниться
Вот както так... но всегда true возвращает... PHP: <?php $p = system('ping 192.168.50.1'); if($p) { echo("Есть ответ"); } else { echo("Хост не активен"); } ?>
хм, ну попробуй: 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> Видишь в чем разница? пробуй после с, допустим, началом вхождения, если ищет "обмен пакетами" ну или и т.д. по длинне например и т.д., вариантов множество, парсить нужно
to MisteriX В книге Фролова ПХП для хакера (как всегда оригинальное название ) есть робота с сокетами и там он пишет как написать сканер портов и ФТП-клиент. Думаю будет интересно почитать
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>'; } ?>
И хрен ты напишешь пинг на пхп. Это невозможно. Теоретическая возможность, кстати, есть. Через сырые сокеты. И вебсервер с правами рута, что уже полный бред.
2 Isis Скрипт харош... ну идея не в этом! Кароч конечный результат работы скрипта должен показывать слудующее: Тоесть ты запускаеш скрипт и оно показует кто в твоеей подсети онлайн, кто офф Для этого оно должно не просто пинговать, а возвращать true или false, тоесть мне самим пинги не важны главное узнать этот ip щас занят или нет.... Но я придумал идею круче пинга, кароч через сокеты конектиться на 445 порт (Mirosof-DS), так как если ждать выполнения каждого пинга пройдет очень много времени... Вобщем как закончу, то выложу исходник.
Вот чисто кусок кода, который будет показывает какие есть ИП на искомой странице, пригодться может.... 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']; ?>
Isis у меня выдает ошибку Warning: system() has been disabled for security reasons in /home/czexel/public_html/z.php on line 37 что зделать надо что бы работало дальше нормально ?
А вообще хостера попросить мона что бы функцию ету включил или ета как бы функция что опасна для их системы ?
Попросить то можно, но врядли он включит узнай, мож другие какие нить функции включены passthru, exec,popen, proc_open... хотя врядли если без пинга этого никак и php не принципиально важен, и есть поддержка cgi-сценариев (папка cgi-bin) то пользуй perl например, мдя... слишком много условий
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"; } } ?> Интересный скриптик по пингу сайтов_))