Как сделать пинг на php? Как отпинговать https на php? Как отпинговать ip на php?

Одним из вопросов дня стоял как сделать пинг на php не только http или https сайтов но и любых ip адресов — так, что бы скрипт не падал — а работал и писал в Базу. Делаем табличку ‘ping’ в MySQL! Пускаем скрипт под SSH (Под Браузером может висеть из-за таймаута и https)! На сервере же ВСЁ РАБОАТЕТ! ПРоверено! Потом мы записываем его в CRON. Например, у Мастер хоста ограничение 1 раз в час на запуск, и тем не менее — порывшись в Интернете — я понял что, большинство ламеров тупые мудаки — которые не хотят даже думать своей головой, а тупо копируют, в прямом смысле слова — один и тот же пример кода… на тысячи сайтов о PHP! Меня эта херня жутко взбесила, особенно когда ты ценишь своё время. Ни одного нормального рабочего примера на наших русских сайтах — ребята ЭТО ПОЗОР бля! Я решил сделать из этих ДЕБИЛЬНЫХ примеров свой (убив 4 дня) — сделал проверенный, рабочий скрипт для пинга на php! Вот он. В его основу ложится библиотека CURL! Пишет и читает из MySQL (Для анализа)! Кавычки тут коцает WordPress — скачать пример пинг на php ip-адресов, сайтов с https или http тут. Смотрим код:

<?php
// =======================================================================
//
//        Скрипт для пинга компьютеров, сайтов и IP-адресов на php + MySQL
//            (Может ВИСЕТЬ из под Браузера-клиента)
//
//         ГАРАНТИРОВАНО РАБОТАЕТ ИЗ ПОД CRON!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//            (Запустите его под SSH - и он работатет бля)
//                 Programming by HelpSet.ru
//
//        PS: Может долго думать на https - но работать БУДЕТ! Просто подождите!
//
//             спасибо мне любимому за разбор этого говна!
//
// =======================================================================

$baseurl = "http://helpset.ru/";
$pathurl = $_SERVER['DOCUMENT_ROOT'];
$http_code = "0";
$ssid = md5(rand(11111,99999)); // Рандомайзер от кеширования
// include ($pathurl."/db_connects.php"); // Коннектимся к БД - я закоментарил ЭТО, потому что CRON (сука) не поддерживает пути к include!!!!!!!!!!
// Написал ЯВНО - из-за CRON!
$db=mysql_connect ("u38245.mysql.masterhost.ru", "u38245", "tutparolblya") or die ('База упала сука!. Праверти ашипки!.');
mysql_select_db ("u38245", $db);

// Забираем всё из БД (id, ip, datacon, computer, version...) сделайте свою БД с таблицей ping
$queryz = "SELECT * FROM `ping`";
$resultz = mysql_query($queryz);
$rowz = mysql_fetch_array($resultz);   // mysql_fetch_assoc
?>

<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">
<meta http-equiv=\"Pragma\" content=\"no-cache\">
<meta http-equiv=\"Refresh\" content=\"5555;URL=".$baseurl."ping.php\"><!-- Это будет работать только из-под браузера, но не на сервере -->
<title>Как пинговать компьютеры или IP-адреса на php: <?=$ssid;?> Спасибо сайту HelpSet.ru</title>
</head>
<body>
Key_MD5: <?=$ssid;?><!-- Антихеш ключиг подходит скарее для Браузера, чем для Linux --> <br><br>
<?php
do {
// Нарзвание копьютера
$compname = htmlspecialchars(strip_tags($rowz['computer']));
$computer = $compname;
// Версия с https или http
$count2 = htmlspecialchars(strip_tags($rowz['version']));
$version = $count2;
// IP
$count3 = htmlspecialchars(strip_tags($rowz['ip']));
$ip = $count3;

// Если просто - то так и будет HTTP  -------------------------------------------------
$newip = $ip;
$url = "http://".$newip."/"; // готовим для CURL-пинга
// Если версия c HTTP  -------------------------------------------
if ($count2=="oldpinger")
{
$ip = "http://".$newip."/";
$url = $ip; // готовим для CURL-пинга
}
// Если версия c HTTPS ----------------------------------------
if ($count2== "pinger")
{
$ip = "https://".$newip."/".$version."/";
$url = $ip; // готовим для CURL-пинга
}
// echo ("<br>url=".$url." ");
$ipsubstr = substr($newip, 0, 3); // возвращает "abcd" - делаем маску, для ЛОКАЛХОСТА (что бы не пинговать WEB-сервером локалку)
if ($ipsubstr=="0.0" || $ipsubstr=="0.1" || $ipsubstr=="15." || $ipsubstr=="220" || $ipsubstr=="192" || $ipsubstr=="85.") // Это, что бы не пинговать СЕТИ: "Kremlin" или "НАШУ
ЛОКАЛКУ"
{
$query = "UPDATE `ping` SET `status`='2', WHERE `ping`.`comp` = '".$comp."' LIMIT 1"; // Меням статус с БД - что запинговано типо (заглушка для ЛХ)
mysql_query($query); // DO master
}
else // Если не наша локалка, то:
{
// Инициализируем среду для подключения (для пинга) - надо сказать что CURL - КАПРИЗНАЯ СУКА (Ни одного примера нет рабочего РУсского)!
$ch = curl_init($url);    // Инизиализируем заголовок
curl_setopt($ch, CURLOPT_HEADER, 0);        // Не выводить заголовок
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Хост отвечает
curl_setopt($ch, CURLOPT_NOSIGNAL, 1); // Если не приходит сигнал
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 60); // Тайм аут - для CRON - делайте меньше, ибо там СЕРВЕР-to-СЕРВЕР и время быстрее идёт
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // Не спрашивать TLS
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // Не проверять хост с SSL (HTTPS)
$data = curl_exec($ch);            // Запуcг
$curl_errno = curl_errno($ch);            // Если ошибка - то Номер ошибки
$curl_error = curl_error($ch);            // Если Ошибка пинга
curl_close($ch);
if ($curl_errno > 0) // Если есть ошибка пинга
{
echo "<H2>Error:".$url." whats:".$curl_error."</H2>"; // Показываем что за епрст
}
else  // Если нет ошибки пинга
{
echo "<H2>Ping:".$url." is ok</H2>"; // Пишем, что отпингован такой-то
$datacon = date('Y-m-d H:i:s');    // Безём текущую дату
$query = "UPDATE `ping` SET `status`='1', `datacon`='".$datacon."' WHERE `ping`.`computer` = '".$comp."' LIMIT 1"; // Апдейтим в БД статус пинга
mysql_query($query); // DO master... БД
}

}
}
while ($rowz = mysql_fetch_array($resultz));    // Циклим, пока не станет  $resultz==FALSE
mysql_close($db);    // Зокрываем БД

?>
</body></html>

10 thoughts on “Как сделать пинг на php? Как отпинговать https на php? Как отпинговать ip на php?

  1. Вот удачный вариант используя nmap
    nmap -sP -iL ip_net —traceroute -oX out.xml
    здесь:
    ip_net — имя файла в котором ip-адреса находятся на новой строке
    в out.xml получаем результат.
    но можнот и nmap -sP -iL ip_net

  2. Дикий ужос. Предупреждать надо что здесь такой капец.
    Это или пыхпых так ужасен, или разраба надо отлучить от программирования без права возврата

    1. А может — покажешь примерчег свой? А слабо? Пистеть не мешки ворочить… Ну? Где? Слабо? Условия такие для программы:
      1) PHP 5.3.8
      2) Без участия system, exec, shell…. где нет доступа к оболочке (они закрыты)
      3) Автономный режим — поддерживаюший запись в MySQL (include — не инклуд)
      4) Протоколы: ftp, http, https в том числе — без ошибок (ибо тайм аут может быть 1500мс! и более, а вам надо записать сигнал)
      5) Расчитаный на 10000 соединений (единовременно)
      Ну что лошарик? Так кому на ОВОЩЕБАЗУ пора — без права возврата к ПХП? А? 🙁

  3. А можно попросить автора отсыпать травы? ибо такой черезкостыльный метод лечится только ректальным криптоанализом

    1. Да ты что? А есть идеи? (Если у вас и shell, exec, system… не работают) А вам надо именно php? На сокетах? Не смешите мои партянки дядя…

    2. Умник. Может дашь ссылочку — где у ТЕБЯ НЕ черезкостыльный метод???? А я тебя обосру с ног до головы, про программирование и тп. И потом посмотрим, кто и вас ху

  4. ахахаха, это 5!
    Чувак, пиши исчЁ!!!
    Баш орг ждет тебя! )

    1. Примеры ВАШИ где? Пока — кроме ха, ха и обсерателств статьи — ничего не видно…….. Попахивает лошками.

Comments are closed.