Автоподъем серверов Quakehost, Скрипт подъема сервера |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
Автоподъем серверов Quakehost, Скрипт подъема сервера |
eagle-ru |
21.4.2011, 12:43
Сообщение
|
|
Кто пользуется хостингом от Quakehost.ru знают, что у них нет автоматического подъема сервера при падении. Для этих целей был написан php-скрипт. Принцип работы: cкрипт мониторит (пингует) сервер, если сервер не отвечает, посылается команда на перезагрузку сервера. Помимо этого скрипт ведет логи, когда сервер не отвечал на запросы и был перезагружен. Скрипт: CODE // Автор: .:EAGLE:. // Скрипт для автоподъема сервера на хостинге Quakehost.ru . // ICQ: 477079475 <?php function cs_scan($ip,$port) { $fp = @fsockopen("udp://$ip",$port,$errno,$errstr); @stream_set_timeout($fp,1,0); @stream_set_blocking($fp,true); if (!$fp) { unset($data); $data[address] = $ip.":".$port; $data[gamemod] = "-"; $data[hostname] = "-"; $data[mapname] = "-"; $data[players] = "0"; $data[maxplayers] = "0"; $data[password] = "-"; $data[datatype] = "-"; $data[version] = "-"; $data[description] = "-"; $data[server_type] = "-"; $data[server_os] = "-"; $data[server_secure] = "-"; $data[server_bots] = "-"; return $data; } else { fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\x00"); $buffer = fread($fp,4096); if (!$buffer) { fclose($fp); unset($data); $data[address] = $ip.":".$port; $data[gamemod] = "-"; $data[hostname] = "-"; $data[mapname] = "-"; $data[players] = "0"; $data[maxplayers] = "0"; $data[password] = "-"; $data[datatype] = "-"; $data[version] = "-"; $data[description] = "-"; $data[server_type] = "-"; $data[server_os] = "-"; $data[server_secure] = "-"; $data[server_bots] = "-"; return $data; } $second_packet = $buffer; if (strlen($second_packet) > 0) { $reverse_check = dechex(ord($buffer[8])); if ($reverse_check[0] == "1") { $tmp = $buffer; $buffer = $second_packet; $second_packet = $tmp; } $buffer = substr($buffer, 13); $second_packet = substr($second_packet, 9); $buffer = trim($buffer.$second_packet); $buffer = trim(substr($buffer, 4)); if (!trim($buffer)) { unset($data); $data[address] = $ip.":".$port; $data[gamemod] = "-"; $data[hostname] = "-"; $data[mapname] = "-"; $data[players] = "0"; $data[maxplayers] = "0"; $data[password] = "-"; $data[datatype] = "-"; $data[version] = "-"; $data[description] = "-"; $data[server_type] = "-"; $data[server_os] = "-"; $data[server_secure] = "-"; $data[server_bots] = "-"; return $data; } } } fclose($fp); unset($data); $tmp = explode("\x00", $buffer); $place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5; $data[address] = $ip.":".$port; $data[gamemod] = $tmp[3]; $data[hostname] = $tmp[1]; $data[mapname] = $tmp[2]; $data[players] = ord($buffer[$place]); $data[maxplayers] = ord($buffer[$place + 1]); $data[password] = ord($buffer[$place + 5]); $data[datatype] = $buffer[0]; // m для стрим инфы $data[version] = ord($buffer[$place + 2]); // версия $data[description] = $tmp[4]; $data[server_type] = $buffer[$place + 3]; // D выделный или L простой $data[server_os] = $buffer[$place + 4]; // W под виндой или L под линуксом $data[server_secure] = ord($tmp[14]); // VAC $data[server_bots] = ord($tmp[15]); // кол-во ботов if (substr_count($data[hostname],"banned") == 1) { $data[hostname] = " You have been banned from this server"; $data[mapname] = "-"; } if ($data == "Server offline") { unset($data); $data[hostname] = "Server Offline"; $data[mapname] = "-"; $data[players] = "0"; $data[maxplayers] = "0"; } return $data; } ?> <? $ip="***"; // ip сервера $port="***"; // порт сервера $data = cs_scan($ip,$port); if ($data[hostname]=="-") // Если сервер не доступен { // Перезагрузка сервера file_get_contents('http://**ip**/services.php?email=***@&password=***&server=***&options=&act=restart'); // вводим email и password от панели управления хостигом // Запись лога в файл serverup_log.txt даты и время падения сервера date_default_timezone_set('Europe/Volgograd'); $datetime_now = date ("d.m.Y H:i:s"); $fp = fopen("serverup_log.txt", "a"); // Открываем файл в режиме записи $mytext = "Server offline - $datetime_now \r\n"; // Исходная строка $test = fwrite($fp, $mytext); // Запись в файл fclose($fp); //Закрытие файла } else echo "<b>Server - <font color='green'>Online.</font></b>"; // Иначе сервер Online ?> Пример лога сервера: Server offline - 12.04.2011 22:39:06 Server offline - 13.04.2011 16:15:18 Server offline - 14.04.2011 03:09:17 Server offline - 18.04.2011 02:51:06 Server offline - 18.04.2011 16:39:07 Server offline - 20.04.2011 20:48:05 Установка: 1) Для работы скрипта необходим хостинг с поддержкой php и cron 2) Редактируем скрипт - необходимо изменить на ваши данные места помеченные ***. Данные можете узнать из исходного кода страницы в панеле управления хостингом CS 1.6 Quakehost.ru 3) Заливаем скрипт на хостинг с расширением *.php 4) На хостинге создем пустой текстовый файл (*.txt) с именем - serverup_log.txt 5) Создаем задание в cron на выполнение php-скрипта (Лучше время выполнения ставить каждую минуту). 6) Обязательно! Откройте порты у хостера. Проще всего просто написать в тех поддержку и открыть порты соответственно вашего сервера CS 1.6, т.е. если ip вашего сервера 77.777.777.777:27039 - нужно на хостиге открыть порт 27039. 7) Готово. Тестируем, кладем сервер через панель управления, через минуту сервер восстанет =). Хостинг от uCoz не подходит!!! Могу посоветовать хороший хостинг, с поддержкой всего, что нужно: www.shneider-host.ru. Или можно найти бесплатный хостинг, но лучше потратить 30 рублей, чем потом узнать, что и сервер, и сайт лежит =).
Отредактировал: eagle-ru, - 21.4.2011, 22:07
|
Поблагодарили 4 раз
|
|
STILL47DEATH |
21.4.2011, 21:12
Сообщение
|
|
eagle-ru,
1. Код надо пихать в соответствующий тег 2. Я правильно понял, что скрипт пингует сервер и если тот не отвечает, то идёт команда на ребут сервера, так? Но сколько раз перед ребутом идёт проверка? Ведь когда карта меняется сервер зачастую показывается как оффлайн. |
|
|
eagle-ru |
21.4.2011, 22:04
Сообщение
|
|
eagle-ru, 1. Код надо пихать в соответствующий тег 2. Я правильно понял, что скрипт пингует сервер и если тот не отвечает, то идёт команда на ребут сервера, так? Но сколько раз перед ребутом идёт проверка? Ведь когда карта меняется сервер зачастую показывается как оффлайн. "Я правильно понял, что скрипт пингует сервер и если тот не отвечает, то идёт команда на ребут сервера, так?" - да, так. Проверка идет так часто на сколько ты настроишь задание в cron. Я поставил - каждую минуту. Если будет меняться карта сервер все равно будет отвечать на запросы, а следовательно online. |
Поблагодарили 1 раз
|
|
STILL47DEATH |
22.4.2011, 20:46
Сообщение
|
|
"Я правильно понял, что скрипт пингует сервер и если тот не отвечает, то идёт команда на ребут сервера, так?" - да, так. Проверка идет так часто на сколько ты настроишь задание в cron. Я поставил - каждую минуту. Если будет меняться карта сервер все равно будет отвечать на запросы, а следовательно online. ну как скажешь, просто я знаю, что при смене карты скрипт не всегда определяет онлайн сервера правильно! |
|
|
eagle-ru |
22.4.2011, 21:38
Сообщение
|
|
Тестировали, если все правильно настроить - работает стабильно. Данный скрипт установлен уже на многих серверах Quakehost.ru, но так как тех. поддержка не захотела оказывать помощь в установке скрипта на клиентские сервера, решил выложить скрипт в public.
|
Поблагодарили 1 раз
|
|
cs-portal |
23.4.2011, 23:28
Сообщение
|
хоть убей
ну не вижу я в скрипте пользы так как если сервер НЕ отвечает ето одно из двух 1-сервер завис - то есть зависло его fps. и он не реагирует 2-сервер выключен полностью скрипт же не запускает .sh / .exe а на команду перезапуска если сервер ВИСИТ он НЕ ответит.
Отредактировал: cs-portal, - 23.4.2011, 23:30
|
|
|
|
StSatan |
24.4.2011, 11:54
Сообщение
|
Чёто я сколько не пытался использовать этот скрипт у меня сервер просто каждую минуту перезагружался через крон, ип и порт указывал правильно
Команду перезапуска заменить можно командой старт: Тоесть вот эту строчку Цитата http://**ip**/services.php?email=***@&password=***&server=***&options=&act=restart поменять на эту Цитата http://**ip**/services.php?email=***@&password=***&server=***&options=&act=start
|
|
|
|
StSatan |
24.4.2011, 14:41
Сообщение
|
У кто-нибудь уже сделал себе автоподъём? отпишитесь...
|
|
|
|
Sw1ch |
24.4.2011, 17:30
Сообщение
|
Гавно хостинг, лучше перейти на другой, дороже, чем у них арендовать сервер - проверенно на своём опыте.
|
|
|
|
eagle-ru |
24.4.2011, 22:35
Сообщение
|
|
хоть убей ну не вижу я в скрипте пользы так как если сервер НЕ отвечает ето одно из двух 1-сервер завис - то есть зависло его fps. и он не реагирует 2-сервер выключен полностью скрипт же не запускает .sh / .exe а на команду перезапуска если сервер ВИСИТ он НЕ ответит. Так вот если сервер не отвечает - значит он не работает, завис. Скрипт посылает запрос на перезагрузку не через rcon (не путать с cron!!!), так вот выполнив этот запрос на сервере хостинга происходит перезагрузка сервера. (Перезапуск консоли сервера). И тут не важно ответит тебе сервер или нет. Перезагрузка идет на сервере-хостинге. Чёто я сколько не пытался использовать этот скрипт у меня сервер просто каждую минуту перезагружался через крон, ип и порт указывал правильно Команду перезапуска заменить можно командой старт: Тоесть вот эту строчку поменять на эту. Вот тут очень важно!!! Открыть порты на хостинге сайта (где скрипт php)! Поэтому у тебя не работает. Проверить это можно выполнив скрипт через строку адреса в браузере - если сервер работает и порты открыты - должна появиться строка - Server - Online. Начет команды перезапуска. Заменить нельзя! Т.к. на данном хостинге очень часты случаи когда сервер не работает, а в статусе панеле управления висит надпись online. Команда перезагрузки (restart) же перезапустит сервер даже если панель говорит, что сервер online. Скрипт не "слушает" что пишет панель. Он сам проверяет доступность сервера. Панель управления данного хостинга далека от совершенства. Еще раз повторюсь данный скрипт прекрасно работает уже на многих серверах. Так же стоит и на моем личном сервере. |
Поблагодарили 1 раз
|
|
cs-portal |
25.4.2011, 14:01
Сообщение
|
все ясно я думал скипт напрямую может запускать. а не через панель
|
|
|
|
StSatan |
26.4.2011, 12:44
Сообщение
|
Цитата Вот тут очень важно!!! Открыть порты на хостинге сайта (где скрипт php)! Поэтому у тебя не работает. Проверить это можно выполнив скрипт через строку адреса в браузере - если сервер работает и порты открыты - должна появиться строка - Server - Online. Ух, щас конечно ещё раз попробую, какие порты открывать на хостинге где php скрипт залит те которые у сервера? Тоесть у моих серверов порты 27026 и 27030, я должен на хосте сайта в тех. поддержке попросить открыть эти же самые порты?
Отредактировал: StSatan, - 26.4.2011, 12:53
|
|
|
|
StSatan |
26.4.2011, 19:22
Сообщение
|
На хосте сайта отказали в открытии портов, якобы через них могут другие люди мониторинг сделать ) чё делать?О_о
|
|
|
|
eagle-ru |
26.4.2011, 19:48
Сообщение
|
|
Ух, щас конечно ещё раз попробую, какие порты открывать на хостинге где php скрипт залит те которые у сервера? Тоесть у моих серверов порты 27026 и 27030, я должен на хосте сайта в тех. поддержке попросить открыть эти же самые порты? Да именно эти порты. Если не открывают никак, то тут выход один, купить за 30 руб. хостинг (порты открывают, скрипт работает, сам пользуюсь), ссылку на который Я дал выше. Или найти более дешевый/бесплатный хостинг с php и cron, тогда заранее уточни про порты. |
Поблагодарили 1 раз
|
|
StSatan |
26.4.2011, 20:46
Сообщение
|
Ну раз на www.shneider-host.ru открывают порты я тогда на него перееду) раз уж проверено
Странный хост всего 30р месяц за 500мб хдд крон пхп и т.д. не кидалово?) |
|
|
|
eagle-ru |
26.4.2011, 21:39
Сообщение
|
|
StSatan, пользуюсь уже почти год - претензий нет и все, что необходимо поддерживает. Сам удивился от хостинга. Было только несколько раз, что сайт не открывался да и то на час. Uptime 99.9 %.
Почитай отзывы о хостинге. Там много чего интересного пишут. Лично на тарифе 0.99$ у меня сайт на Joomla, форум на phpbb3, сайт на DLE, быстрая загрузка файлов через http (для сервера CS 1.6), скрипт автоподъема и так по мелочи.
Отредактировал: eagle-ru, - 26.4.2011, 21:41
|
Поблагодарили 1 раз
|
|
StSatan |
29.4.2011, 16:22
Сообщение
|
Вчера всё сделал - всё работает, скрипт сервер поднимает, и больше не перезагружает(порты открыли). Спасибо большое eagle-ru, без этого скрипта геморой был=) хоть сервер собрал и не падающий, но всёже раз в месяц случайные падения были, и не сразу серв подымали - в общем бред. Спасибо за скрипт.
Ах да исправь на картике Avtorestart на Autorestart а то как-то...
Отредактировал: StSatan, - 29.4.2011, 18:38
|
|
|
|
eagle-ru |
1.5.2011, 22:42
Сообщение
|
|
StSatan, не за что :wink:
Ах да исправь на картике Avtorestart на Autorestart а то как-то... - пусть это будет фишкой =). Сам хостинг не заинтересован в добавлении данной функции, хотя у остальных она уже стандартно входит в набор. |
|
|
-ZVER- Contra |
17.5.2011, 18:24
Сообщение
|
|
а для serva4ok.ru сможешь такое сделать ??
|
|
|
djdredd |
17.5.2011, 21:08
Сообщение
|
|
|
|
|