Скрипт автоматического перезапуска МастерСервера, Автозапуск MS, перезапуск MS, перезапуск MasterServer |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
![]() |
Скрипт автоматического перезапуска МастерСервера, Автозапуск MS, перезапуск MS, перезапуск MasterServer |
![]() |
![]()
Сообщение
|
![]() ![]() |
Хайо!
У вас есть мастерсервер, но нет времени следить за корректностью его работы? Тогда вы попали по адресу)) В каких случаях мне поможет данный скрипт? В следующих: 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 р, кому необходимо стучите в скайп Так же на бесплатной основе поддержка будет оказана в данном топике Не орите что не работает, если не работает значит криво настроили! ![]()
Отредактировал: Vitaliy, - 30.9.2017, 23:21
![]() PHP / JS / Java / JavaFX
SVV Monitor Engine - Продажа мониторинга игровых серверов, подробнее: профиль / лс / контакты |
![]() |
|
![]() |
![]()
Сообщение
|
![]() |
Молодец Виталик ! А-то надоели проблемы мастерсерверов. Напомни свой скайп в ЛС, а-то в аську не захожу.
|
![]() |
|
![]() |
![]()
Сообщение
|
![]() ![]() ![]() |
Автозапуск после перезагрузки VPS и рестарт после падения делается баш-скриптом на 3 строки через while в кроне.
Реально для чего вижу этот скрипт полезным - это kill + запуск процесса МС в случае его подвисаний. У меня бывает stack overflow или segmentation fault в процессе работы и это бесит, т.к. процесс не падает и вызвавший его скрипт не понимает что его нужно перезапустить. Собирался сам писать подобный скрипт, но определенно не на баше потому что в нем не шарю толком. Протестирую сегодня. ![]() Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
|
![]() |
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Автозапуск после перезагрузки VPS и рестарт после падения делается баш-скриптом на 3 строки через while в кроне. Реально для чего вижу этот скрипт полезным - это kill + запуск процесса МС в случае его подвисаний. У меня бывает stack overflow или segmentation fault в процессе работы и это бесит, т.к. процесс не падает и вызвавший его скрипт не понимает что его нужно перезапустить. Собирался сам писать подобный скрипт, но определенно не на баше потому что в нем не шарю толком. Протестирую сегодня. Каждый из скрипта свои плюсы вынесет.
Отредактировал: twileck, - 1.10.2017, 7:22
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Если у кого-то не работает, установите netcat (который видимо не везде по дефолту)
Код sudo apt install netcat Ставил год назад, не смог установить, пришлось обращаться к SVV за установкой. Сейчас благо разобрался. [мало ли кому в будущем пригодится]
Отредактировал: hoolz, - 8.1.2020, 0:20
![]() 🚀 CS-BOOSTER — раскрутка серверов Counter-Strike 1.6
|
|
|
![]() |
![]()
Сообщение
|
![]() |
![]() Простой скрипт (написал за 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
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
И данный скрипт годится для поздних версий МС. Если использовать ранние версии с открытм кодом, то запуск идет как 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, 7:02
|
|
|
![]() ![]() |