ЗАКРЫТЬ
Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

23-апр
10-апр
11-апр
02-дек

Раскрутка Counter-Strike 1.6

Скрипт автоматического перезапуска МастерСервера

, Автозапуск MS, перезапуск MS, перезапуск MasterServer
Статус пользователя Vitaliy
сообщение 30.9.2017, 14:12
Сообщение #1


Стаж: 10 лет

Сообщений: 2431
Благодарностей: 525
Полезность: 608

Меценат Меценат

Хайо!
У вас есть мастерсервер, но нет времени следить за корректностью его работы? Тогда вы попали по адресу))

В каких случаях мне поможет данный скрипт?
В следующих:
1. После перезапуска ВДС
2. После падения процесса по любой причине
3. Если мастерсервер работает (процесс висит, порт прослушивается), но не отдает список серверов

Возможности:
1. Проверка статуса порта (прослушивается ли он)
2. Проверка ответа от МС (проверка корректности ответа мс)
3. Логирование проверок
4. Локальный перезапуск
5. Удаленный перезапуск по SSH (скрипт на одной вдс, а МС на другой)
6. Отправка уведомления о перезапуске на почту
7. Возможность установить проверку на 1 процесс и несколько МС (разные порты)
8. Гибкий конфиг настроек, необходимости лезть в код нету

Требования:
- Netcat (по умолчанию есть)
- Mail (необходимо установить для отправки email уведомлений)
- sshpass (необходимо установить для выполнения удаленного перезапуска)
- ssh (по умолчанию есть)

Скриншотики:

МС работает:
Прикрепленное изображение
МС не работает:
Прикрепленное изображение
Конфиг:
Прикрепленное изображение
Файл логов:
Прикрепленное изображение
Email уведомление:
Прикрепленное изображение
Вау, хочу поставить себе, а как?
0. Залить папку checker в папку home на вашем севрере
1. Настроить конфиг checker.conf в папке checker/configs (Описание настройки будет ниже)
2. Логинимся к своей серверу по SSH используя putty
3. Вводим команду "crontab -e"
4. В самый конец вставляем строчку:
* * * * * cd /home/checker && timeout 30 bash checkMasterServerStatus.sh checker.conf > /dev/null 2>&1
5. Сохранить изменения
6. Спим спокойно
Настройки конфига

#[MasterServer settings]
host=127.0.0.1 # (MasterServer host, set domain or external address for remote and 127.0.0.1 for local check) Можно не трогать
port=27010 # (MasterServer port) Можно не трогать

#[Checker settings]
checkMasterServerAnswer=1 # (Check if MS answer is correct [0 - no, 1 - yes]) Можно не трогать

#[Restart settings]
type=0 # (For remote restart used ssh [0 - local, 1 - remote]) Можно не трогать
processName=mslauncher # (Process name, which must be killed) Можно не трогать, если мс от jesuspunk
startCommand="cd /home/jesus-ms && ./start_ms_screen.sh" # (Start command) Меняем на свою команду запуска
checkBeforeRestart=1 # (Number of rechecks before restart) К-во повторных проверок перед перезапуском МС
recheckSleep=3 # (Time in seconds for sleep before recheck) Время в секундах перед повторной проверкой МС

#[Remote host settings]
rHost=185.158.115.99 Можно не трогать
rPort=22 Можно не трогать
rUser=root Можно не трогать
rPassword=ZiymAIaOuEuqHPPu Можно не трогать

#[Email settings]
sendNotify=1 # (Send email notify [0 - no, 1 - yes]) Для отключения уведомлений на почту поставьте 0 вместо 1
[email protected] # (Send notify about restarts to email) Смените на свою почту

#[Logging settings]
logSuccess=1 # (Log success check [0 - no, 1 - yes]) Можно не трогать
logError=1 # (Log error check [0 - no, 1 - yes]) Можно не трогать

#[Output settings]
printMessages=1 # (Print messages [1 - yes, 0 - no]) Можно не трогать

#[System settings]
checkByteString=ffffffff660a # (Success byte answer) НЕ ТРОГАЕМ
sendPacketValue=1xFF0.0.0.0:0\0\gamedir\cstrike\0 # (Query packet value) НЕ ТРОГАЕМ

Особенности:
- тот же самый скрипт можно запускать с разным названием конфигов, изменняя конфиг в кронтаб команде (требуется для проверки нескольких МС на 1 сервере )

Ошибки:
- если найдете ошибку или будут пожелания оставьте свой пост здесь, не пишите мне в скайп и тд.)
[скрипт тестировался мной, но проблемы не исключены]


Если у кого возникло желание сказать спасибо в денежной форме: (заранее спасибо)

Webmoney
R354916612926
U238062228356
Z103301982775
E137896298579

Могу установить за Вас, цена - 200 р, кому необходимо стучите в скайп
Так же на бесплатной основе поддержка будет оказана в данном топике

Не орите что не работает, если не работает значит криво настроили!
Прикрепленный файл  MS_Checker_v1.0_by_www.SVV.name.rar ( 1,95 килобайт ) Кол-во скачиваний: 152


Отредактировал: Vitaliy, - 30.9.2017, 23:21


PHP / JS / Java / JavaFX
SVV Monitor Engine - Продажа мониторинга игровых серверов, подробнее: профиль / лс / контакты
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 6 раз
   Цитировать сообщение
EvilSMS
сообщение 30.9.2017, 14:51
Сообщение #2
Стаж: 6 лет 9 месяцев

Сообщений: 1801
Благодарностей: 410
Полезность: < 0

Молодец Виталик ! А-то надоели проблемы мастерсерверов. Напомни свой скайп в ЛС, а-то в аську не захожу.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 30.9.2017, 18:28
Сообщение #3


Иконка группы

Стаж: 9 лет

Сообщений: 2204
Благодарностей: 1393
Полезность: 724

HostGame.cf
Автозапуск после перезагрузки VPS и рестарт после падения делается баш-скриптом на 3 строки через while в кроне.
Реально для чего вижу этот скрипт полезным - это kill + запуск процесса МС в случае его подвисаний. У меня бывает stack overflow или segmentation fault в процессе работы и это бесит, т.к. процесс не падает и вызвавший его скрипт не понимает что его нужно перезапустить. Собирался сам писать подобный скрипт, но определенно не на баше потому что в нем не шарю толком. Протестирую сегодня.


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя twileck
сообщение 1.10.2017, 7:22
Сообщение #4


Стаж: 9 лет 5 месяцев

Сообщений: 2054
Благодарностей: 1616
Полезность: 1064

Цитата(Metal Messiah @ 30.9.2017, 19:28) *
Автозапуск после перезагрузки VPS и рестарт после падения делается баш-скриптом на 3 строки через while в кроне.
Реально для чего вижу этот скрипт полезным - это kill + запуск процесса МС в случае его подвисаний. У меня бывает stack overflow или segmentation fault в процессе работы и это бесит, т.к. процесс не падает и вызвавший его скрипт не понимает что его нужно перезапустить. Собирался сам писать подобный скрипт, но определенно не на баше потому что в нем не шарю толком. Протестирую сегодня.

Каждый из скрипта свои плюсы вынесет.

Отредактировал: twileck, - 1.10.2017, 7:22
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя hoolz
сообщение 8.1.2020, 0:20
Сообщение #5


Стаж: 7 лет 11 месяцев
Город: Warszawa

Сообщений: 1070
Благодарностей: 836
Полезность: 1159

Если у кого-то не работает, установите netcat (который видимо не везде по дефолту)
Код
sudo apt install netcat


Ставил год назад, не смог установить, пришлось обращаться к SVV за установкой. Сейчас благо разобрался.
[мало ли кому в будущем пригодится]

Отредактировал: hoolz, - 8.1.2020, 0:20


🚀 CS-BOOSTER — раскрутка серверов Counter-Strike 1.6
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 8.1.2020, 10:15
Сообщение #6
Стаж: 3 года 5 месяцев

Сообщений: 743
Благодарностей: 315
Полезность: 187

hoolz,

Простой скрипт (написал за 5 минут) который проверит наличие открытого 80 порта (для быстрой загрузки файлов прямо с каталога сервера) и если порт недоступен перезапустит веб-сервер nginx (по умолчанию)
Проверит не завис ли процесс nginx и если завис завершит процесс и перезагрузит веб-сервер.
Проверит доступность порта сервера HLDS и если порт недоступен перезапустит его HLDSRESTART.

Код
sudo apt install netcat


Вот сам скрипт который кидаем в крон на выполнение каждую минуту:
Код
*/1 * * * * /home/user/autostart/check.sh


Код
#!/bin/bash

HOST=IP
PORT=80
HLDSPORT1=27015
HLDSPATH1=/home/user/autostart/27015
HLDSRESTART1=./27015.sh restart
HLDS=27015/cstrike/mapcycle.txt

if nc -vz $HOST $PORT
then
echo "OK"        
else    
service nginx restart
fi

if wget --spider http://$HOST/$HLDS
then
echo "OK"  
else    
fuser -k $PORT/tcp && service nginx restart
fi

if nc -vz $HOST $HLDSPORT1
then
echo "OK"        
else    
cd $HLDSPATH1 && $HLDSRESTART1
fi


Но я использую реаниматор на питоне
autostart.py
Код
import socket,ConfigParser,sys,thread,time,datetime,os

def servmon(ip,port,ithread,icmd):
#    print icmd
    print "Thread " + str(ithread) + " of monitoring server started\n"
    retry = 0
    while 1:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.connect((ip, int(port)))
        sock.send('\377\377\377\377TSource Engine Query\0')
        print "Thread " + str(ithread)+": "+ "Send ok to "+ip+":"+port+" waiting response for 45 sec....\n"
        sock.settimeout(45)
        try:
            text=sock.recv(1024)
        except Exception, e:
            print "Thread " + str(ithread)+": " + "Error:%s"%e + " on server ip"+ip+":"+port
            retry = retry + 1
            print "retry: " + str(retry)
            if retry > 3:
                print "Thread " + str(ithread)+": " + "retry is more than 3, send restart cmd to system!"
                print icmd
                os.system(icmd)
            time.sleep(13)
            pass
        else:
            if text.find('cstrike') > 1:
                print "Thread " + str(ithread)+": "+ "Response ok from "+ip+":"+port+" next retry to request is 45 sec.\n"
                retry = 0
            time.sleep(45)



srvcs = [ics.strip("\n") for ics in open('server.list')]

print "list of loaded servers:"
for ics in srvcs:
    ip,port,icmd = ics.split(":")
    print ip+":"+port
print "\n"
ithread = 0
for ics in srvcs:
    ip,port,icmd = ics.split(":")
    ithread = ithread + 1
    thread.start_new_thread(servmon, (ip,port,ithread,icmd))
while 1:
        time.sleep(10)
        print "I'm still work and monitoring your servers:)"


Думал это для HLDS тема ((( Но по сути для МС этот скрипт годиться также, порт только добавить 27010 всё остальное (по желанию) выполнит скрипт автора.

Отредактировал: Gecko, - 8.1.2020, 11:26
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sergggzi
сообщение 9.1.2020, 4:47
Сообщение #7
Иконка группы

Стаж: 10 лет

Сообщений: 6495
Благодарностей: 6150
Полезность: 797

И данный скрипт годится для поздних версий МС. Если использовать ранние версии с открытм кодом, то запуск идет как screen -A -m -d -S ms python ms.py и

Код
function restartLocal {
    pkill $processName; eval $startCommand
}


работать не будет, буду плодиться процессы. Надо заменить в checkMasterServerStatus.sh на это

Код
function restartLocal {
    kill $(pgrep -f 'python ms.py'); eval $startCommand
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя max1988
сообщение 30.5.2021, 6:55
Сообщение #8
Стаж: 9 лет 9 месяцев

Сообщений: 293
Благодарностей: 17
Полезность: < 0

Затестим

Отредактировал: max1988, - 30.5.2021, 7:02
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: