Просмотр полной версии : PHP скрипт, ping
MisteriX
18.12.2007, 22:28
Помогите написать скрипт на ПХП, каторый будет выполнять следующее:
Пинговать определенный ip адрес и если есть ответ то возвращать true , а если ответа нет - false
PS: Если кто знает как реализовать это но других языках, то выложите исходники.... а яж сам попробую зделать на пхп, мне важно понять саму систему...
<?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;
?>
типа того
MisteriX
18.12.2007, 22:40
чет не фурычит.... но идею понял... буду думать! СПС Большое
MisteriX
18.12.2007, 22:45
Только вот.... там нада както через системную функцию system() нужно делать.... от того что просто написать $p = "ping -n 3 $ip"; ничего не выполниться
MisteriX
18.12.2007, 22:53
Вот както так... но всегда true возвращает...
<?php
$p = system('ping 192.168.50.1');
if($p)
{
echo("Есть ответ");
}
else
{
echo("Хост не активен");
}
?>
хм, ну попробуй:
C:\Documents and Settings\Snak3>ping lollll.ru
При проверке связи не удалось обнаружить узел lollll.ru. Проверьте имя узла и по
вторите попытку.
и 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>
Видишь в чем разница? пробуй после с, допустим, началом вхождения, если ищет "обмен пакетами" ну или и т.д. по длинне например и т.д., вариантов множество, парсить нужно
чет не фурычит.... но идею понял... буду думать! СПС Большое
этот скрипт на компе валялся, может и сам его писал)))) хз))
demonoid
19.12.2007, 00:01
.....
это но других языках, то выложите исходники....
perldoc Net::Ping
"исходники" _http://perldoc.perl.org/Net/Ping.html
presidentua
19.12.2007, 03:09
to MisteriX
В книге Фролова ПХП для хакера (как всегда оригинальное название :) ) есть робота с сокетами и там он пишет как написать сканер портов и ФТП-клиент. Думаю будет интересно почитать
<?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>';
}
?>
В книге Фролова ПХП для хакера (как всегда оригинальное название ) есть робота с сокетами и там он пишет как написать сканер портов и ФТП-клиент. И хрен ты напишешь пинг на пхп. Это невозможно.
Теоретическая возможность, кстати, есть. Через сырые сокеты. И вебсервер с правами рута, что уже полный бред.
MisteriX
19.12.2007, 11:52
2 Isis
Скрипт харош... ну идея не в этом!
Кароч конечный результат работы скрипта должен показывать слудующее:
Тоесть ты запускаеш скрипт и оно показует кто в твоеей подсети онлайн, кто офф
Для этого оно должно не просто пинговать, а возвращать true или false, тоесть мне самим пинги не важны главное узнать этот ip щас занят или нет....
Но я придумал идею круче пинга, кароч через сокеты конектиться на 445 порт (Mirosof-DS), так как если ждать выполнения каждого пинга пройдет очень много времени... Вобщем как закончу, то выложу исходник.
Вот чисто кусок кода, который будет показывает какие есть ИП на искомой странице, пригодться может....
<?
$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
что зделать надо что бы работало дальше нормально ?
zexel, ничего не сделаешь. Хостер отключил эту функцию на сервере
zexel, ничего не сделаешь. Хостер отключил эту функцию на сервере
А вообще хостера попросить мона что бы функцию ету включил или ета как бы функция что опасна для их системы ?
Ну system() дает юзеру командную строку в пользование :) Конечно опасно. Конечно можешь попросить :)
Попросить то можно, но врядли он включит
узнай, мож другие какие нить функции включены passthru, exec,popen, proc_open... хотя врядли
если без пинга этого никак и php не принципиально важен, и есть поддержка cgi-сценариев (папка cgi-bin) то пользуй perl например, мдя... слишком много условий
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot