Скрипт запуска Counter Strike

criminalist

Участник
Сообщения
194
Реакции
18
Кто нибудь знающий человек есть кто может исправить скрипт запуска под Freebsd ?
PHP:
#!/bin/bash

### BEGIN INIT INFO
# Provides:          srcds
# Required-Start:    $syslog $local_fs $network
# Required-Stop:     $syslog $local_fs $network
# Should-Start:      $remote_fs $named
# Should-Stop:       $remote_fs $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start srcds Server
# Description:       srcds Start Script
# 
# author: LeXiKoN http://eqline.ru
# version: 0.92
#
### END INIT INFO

# Source function library.
. /lib/lsb/init-functions

VERSION=0.92

#####################################################
# Конфигурирование
#####################################################

SERVER_NAME="Exeplay.ru" #Название сервера
screen_name=server #Название screen-сессии
path="/home/server/warmod/orangebox"  #Путь до ROOT-директории сервера
srcds_ip=81.161.212.99  #IP сервера
srcds_port=27017  #Порт сервера
srcds_gametype=cstrike  #Тип игры
srcds_players=20  #Максимальное количество игроков на сервере
srcds_map=de_inferno  #Имя первоначальной карты при запуске
srcds_pid=server.pid
screen_pid=$screen_name-screen.pid
srcds_options="+exec server.cfg +log on"  #Дополнительные параметры запуска
use_user=server #Имя юзера от которого запускается сервер
condebug=1
check_version=0
checker_command="quakestat" #Команда пакета qStat отвечающего за проверку сервера 

#----------------------------------------------------
# Номер ядра/процессора в линуксе 
# 2х-ядерные: 0 - первое ядро, 1 - второе ядро
# 4x-ядерные: 0 - первое ядро ... 3 - четвертое ядро
# По аналогии с другими многоядерными процессорами
use_core=0
#----------------------------------------------------

#################   ВНИМАНИЕ   ###################
#
# Строчки ниже, если не знаете, лучше не трогать!
#
#################   ВНИМАНИЕ   ###################
RETVAL=0

succes="[\033[1;32m ОК \033[0m]"
failed="[\033[1;31m FAIL \033[0m]"
status_on="[\033[1;32m Online \033[0m]"
status_off="[\033[1;31m Offline \033[0m]"
title="\033[1;34m [::]\033[0m"

if [ $condebug = 1 ]; then 
   srcds_options2="-condebug"
fi

# Команда screen
INTR="taskset -c $use_core /usr/bin/screen -A -m -d -S $screen_name"

if [ ! -x $path/srcds_run ]; then
   printf "\033[22;31m Проверьте права на исполнение srcds_run \033[0m\n"
   exit 1
fi

prestart_check() {
   if [ -f $path/$srcds_pid ] && [ -f $path/$screen_pid ]; then
      ch=`ps -ef | grep SCREEN | grep $screen_name`
      if [ -n "$ch" ]; then
         echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         printf "\033[1;34m Сервер $SERVER_NAME\033[0m \033[32m(!!) на данный момент УЖЕ работает (!!)\033[0m\n"
         echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         exit 1
      else 
         cd $path
         rm -rf $path/$screen_pid
         rm -rf $path/$srcds_pid
      fi
   fi
}

start() {
   if [ $check_version = 1 ]; then
      check_version
   fi
   # Проверка престартовая
   prestart_check
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cd $path
   $INTR sudo -u $use_user ./srcds_run -game $srcds_gametype +maxplayers $srcds_players +map $srcds_map +ip $srcds_ip +port $srcds_port $srcds_options $srcds_options2 -pidfile $srcds_pid
   # Поиск и запись пидов процессов сервера и скринв системе
   ps -ef | grep SCREEN | grep "$screen_name" | grep -v grep | awk '{ print $2}' > $path/$screen_pid
   printf "$title\033[1;34m Запуск сервера $SERVER_NAME \033[0m\n"
   printf "\033[1;35m Порт севрера:\033[0m \033[1;36m$srcds_port\033[0m\n"
   printf "\033[1;35m Привязка к ядру:\033[0m \033[1;36m$use_core\033[0m\n"
   printf "\033[1;35m Запуск от юзера:\033[0m \033[1;36m$use_user\033[0m\n"
   printf "\033[1;33m Статус ~> \033[0m"
   sleep 1
   if [ -f $path/$srcds_pid ] && [ -f $path/$screen_pid ]; then
      ch=`ps -ef | grep SCREEN | grep $screen_name`
      if [ -n "$ch" ]; then
         printf "%53s$succes \n"
      else
         printf "%53s$failed \n"
      fi
   fi
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

stop() {
   if [ $check_version = 1 ]; then
      check_version
   fi
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   if [ -f $path/$srcds_pid ] && [ -f $path/$screen_pid ]; then
      # Извлекаем ID процесса из файла и увибаем процессы
      kill `cat $path/$srcds_pid`
      kill `cat $path/$screen_pid`
      sleep 1
      rm -rf $path/$screen_pid
      rm -rf $path/$srcds_pid

      printf "$title\033[1;31m Остановка $SERVER_NAME \033[0m"
      printf "%33s$succes \n"

   else
      printf "\033[1;34m Невозможно остановить $SERVER_NAME, сервер НЕ запущен \033[0m"
      printf "%5s$failed \n"
   fi
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
} 

status() {
   if [ $check_version = 1 ]; then
      check_version
   fi
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   printf "$title\033[1;34m Статус сервера $SERVER_NAME \033[0m\n"
   printf "\033[1;35m Порт севрера:\033[0m \033[1;36m$srcds_port\033[0m\n"
   printf "\033[1;35m Привязка к ядру:\033[0m \033[1;36m$use_core\033[0m\n"
   printf "\033[1;35m Запуск от юзера:\033[0m \033[1;36m$use_user\033[0m\n"
   printf "\033[1;33m Статус ~> \033[0m"
   sleep 1
   ch=`ps -ef | grep SCREEN | grep $screen_name`
   if [ -n "$ch" ]; then
      printf "%49s$status_on \n"
   else
      printf "%48s$status_off \n"
   fi
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

console() {
   if [ $check_version = 1 ]; then
      check_version
   fi
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   if [ -f $path/$srcds_pid ] && [ -f $path/$screen_pid ]; then
      printf "$title\033[1;34m Подключение к консоли $SERVER_NAME сервера \033[0m\n"
      echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      printf "\033[36m Для выхода из консоли поочерёдно нажать \033[1;36mCtrl+A, D \033[0m\n"
      printf "\033[36m Для листинга консоли поочерёдно нажать \033[1;36mCtrl+A, Esc \033[0m\n"
      printf "\033[36m Для выхода из режима листинга нажать \033[1;36mEsc \033[0m\n"
      printf "\033[1;31m Внимание!!! По неаккуратности можно положить сервер :D \033[0m\n"
      echo " Консоль включится через 5 секунд..."
      sleep 5
      /usr/bin/screen -R $screen_name
   else
      printf "\033[1;31m Невозможно подключиться к $SERVER_NAME, сервер не запущен \033[0m\n"
   fi
}

compile() {
   if [ $check_version = 1 ]; then
      check_version
   fi
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   if [ -d $path/cstrike/addons/amxmodx ]; then
      printf "\033[32m Компиляция плагинов AmxModX \033[0m\n"
      echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      printf "\033[36m Компилируются исходные файлы (sma), находящиеся в директории {addons/amxmodx/scripting/*.sma} \033[0m\n"
      printf "\033[36m По завершению компиляции нажмите Q для выхода \033[0m\n"
      printf "\033[36m Компиляция начнется через 2 секунды. \033[0m\n"
      sleep 2
      cd $path/cstrike/addons/amxmodx/scripting
      ./compile.sh
      echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      printf "\033[32m Плагины скомпилированы \033[0m\n"
   else
      printf "\033[22;31m Проверьте установлен ли AmxModX (??) \033[0m\n"
   fi
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

check_version() {
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cd $path
   rm -f version.txt
   wget http://eqline.ru/project/srcds_init_script/version.txt 1> /dev/null 2>&1
   sleep 1
   for ver in `cat $path/version.txt`
   do
      if [ $VERSION \< $ver ]; then
         printf "\033[1;31m Доступна новая версия скрипта ( $ver )\033[0m\n"
         printf "\033[36m Подробнее на форуме eQline.ru: http://forum.eqline.ru \033[0m\n"
         printf "\033[1;36m Ссылка: http://forum.eqline.ru/topic/361-скрипт-запуска-srcds-серверов/ \033[0m\n"
      else
         printf "\033[1;36m Ваша версия является последней\033[0m \033[1;34m( Текущая версия: $VERSION ) \033[0m\n"
      fi
   break
   done
   echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   rm -f version.txt
   sleep 1
}

checker() {
   checktag="[srcds-CheckUP]"
   checkdown=`$checker_command -P -a2s $srcds_ip:$srcds_port | grep DOWN`
   if [ -n "$checkdown" ]; then
      printf "\033[1;37m$checktag\033[0m $SERVER_NAME \033[31m*[DOWN]*\033[0m\n"
      # echo Отсылаем почту
      cd $path
      time=`date +%X`
      date=`date +%D`
      inlog=`$checker_command -P -a2s $srcds_ip:$srcds_port | grep DOWN`
      printf "[$time - $date] *[DOWN]* $inlog\n" >> checker.log
      stop
      sleep 2
      start
      sleep 1
      echo ----------------ATTANTION---------------- >> checker.log
      printf "StartUP $SERVER_NAME:" >> checker.log
      ch=`ps -ef | grep SCREEN | grep $screen_name`
      if [ -n "$ch" ]; then
         printf " *[OK]* \n" >> checker.log
      else
         printf " *[FAILED]* \n" >> checker.log
      fi
      echo ----------------------------------------- >> checker.log
      exit 1
   fi
   checkup=`$checker_command -P -a2s $srcds_ip:$srcds_port | grep cstrike`
   if [ -n "$checkup" ]; then
      printf "\033[1;37m$checktag\033[0m $SERVER_NAME \033[32m*[OK]*\033[0m\n"
      cd $path
      time=`date +%X`
      date=`date +%D`
      inlog=`quakestat -P -a2s $srcds_ip:$srcds_port | grep cstrike`
      printf "[$time - $date] *[OK]* $inlog\n" >> checker.log
      exit 1
   fi
}

case "$1" in
   start)
      start
   ;;
   stop)
      stop
   ;;
   restart)
      stop
      sleep 2
      start
   ;;
   status)
      status
   ;;
   console)
      console
   ;;
   compile)
      compile
   ;;
   checkUpdate)
      check_version
   ;;
   checker)
      checker
   ;;
   *)
   echo "Usage: $0 {start|stop|restart|status|console|compile|checkUpdate|checker}"
   exit 1
esac

Секцию checkUpdate в строке запуска думаю можно выкинуть )) а вот компиляцию я и сам переделал под sourcemod.

image-A506_4CF8D74E.jpg

При запуске выдает что то не знакомое для Freebsd ))
 

Glum

Участник
Сообщения
9
Реакции
0
Можно приспособить для запуска любого хл сервера
 
Сверху Снизу