Скрипт для запуска сервера Counter-Strike Source на FreeBSD

Представляю вашему вниманию скипт для работы с выделенным игровым сервером Counter-Strike: Source. Данный скрипт имеет достаточно большой функционал и пригодится держателям игровых серверов на колокейшене.

Хотелось бы сразу сказать что скрипт писался специально под freebsd и оптимизирован для использвания не root пользователем. Данный скрипт почти готовое решение, вероятно что Вам придётся допиливать его под себя(увы скрипт собран буквально "на коленке"),Все права на этот текст принадлежат Toper и Sem174. Офф. сайт разработчиков topersoft.ru но так как изначально данный материал предназначен для опытных администраторов, думаю что проблем у вас не возникнет.

 

Что нужно что бы скрипт работал ?

Screen, Qstat, Zip и установленный игровой сервер

 

Итак подробне по возможностям скрипта:

  • Запуск сервера
  • Остановка сервера
  • Перезагрузка сервера (без остановки процесса srcds_run)
  • Перезапуск сервера (убивает в том числе и srcds_run)
  • Резервное копирование сервера (только кастомные папки, конфиги, карты, звуки)
  • Просмотр консоли сервера в Screen
  • Обновление до последней версии
  • Вывод статуса
  • Принудительное выполнение конфига server.cfg

Мне кажется это достаточно неплохой функционал для одного скрипта.

Сам скрипт состоит из 2 файлов.

  • srv - файл с настройками сервера для текущего пользователя. Для удобства рекомендую поместить srv файл в корневую директорию пользователя.
  • server.sh - сам скрипт в котором записаны все сценарии. Расположение этого файла Вы можете выбрать сами, главное не забыть прописать его в srv.


export SRVDIR="/home/$USER/server" # Директория в домашней папке пользователя, в которую будет установлен сервер.
export STNAME="nameterm" # Имя терминала screen под которым будет запущен сервер.
export GAME="cstrike" # Название мода, для CSS это cstrike.
export GAMEID="232330" # ID игры для установки и обновления сервера.
export GAMEIP="xxx.xxx.xxx.xxx" # Внешний Ip адрес сервера.
export GAMEPORT="27015" # Порт сервера
export MAPNAME="de_dust2" # Карта с которой стартует сервер.
export MAXPLAYERS="40" # Количество слотов сервера

Конечно же мой скрипт поддерживает SteamCMD поэтому проблем с обновлением сервера с ним не возникнет. Правда иногда сам SteamCMD не отрабатывает как надо, поэтому обновление приходится запускать дважды(редкий случай). Конечно сам родной SteamCMDВсе права на этот текст принадлежат Toper и Sem174. Офф. сайт разработчиков topersoft.ru не работает с FreeBSD, так что потребуется внести изменения в steamcmd.sh.


#!/usr/bin/env bash

STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMEXE=`basename "$0" .sh`


#!/usr/bin/env bash

# STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMROOT=/home/$USER
# STEAMEXE=`basename "$0" .sh`
STEAMEXE=steamcmd

Желательно использовать название my-steamcmd.sh, в таком случае мы не потеряем рабочий файл во время обновления.

Для полной интеграци скрипта потербуется внести в server.cfg некоторые алиасы.


echo "Сообщаю игрокам сервера о перезагрузке"
$SCREEN -S $STNAME -X eval "stuff 'mess_restart'\015"
echo "Ждём 15 секунд"
sleep 15
echo "Выключаем сервер"
$SCREEN -S $STNAME -X eval "stuff 'exit'\015"

Корректно отработает только в том случае, если в server.cfg будет присутствовать строка:


// Aliases settings
alias mess_restart "say Внимание! Сервер будет перезагружен через 15 секунд. Приносим извинения за неудобства"

Как видно из примера мы можем посылать команды в игровую консоль сервера через Screen. Правда сам Screen накладывает некоторые ограничения на длинну команд, поэтому приходитсяВсе права на этот текст принадлежат Toper и Sem174. Офф. сайт разработчиков topersoft.ru использовать алиасы. Но в целом данная фича открывает перед нами достаточно большие возможности.

 

Как это выглядит:

 

Скачать скрипт:

Статья и скрипт от Sem174. Специально для topersoft.ru

P.S.

Комментарии: не по теме, с вопросом как установить на Windows и т.д и т.п будут удаляться. Оставившие такие комменты будут забанены.

Добавить комментарий