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

Тема в разделе "Полезные статьи и материалы", создана пользователем criminalist, 4 дек 2010.

  1. criminalist

    criminalist

    Сообщения:
    191
    Симпатии:
    20
    Кто нибудь знающий человек есть кто может исправить скрипт запуска под 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 ]; 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 [ -
    "$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 ]; 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_namegrep -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 [ -
    "$ch]; then
             printf 
    "%53s$succes \n"
          
    else
             
    printf "%53s$failed \n"
          
    fi
       fi
       
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    }

    stop() {
       if [ 
    $check_version ]; 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 ]; 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 [ -
    "$ch]; then
          printf 
    "%49s$status_on \n"
       
    else
          
    printf "%48s$status_off \n"
       
    fi
       
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    }

    console() {
       if [ 
    $check_version ]; 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 ]; 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 [ -
    "$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 [ -
    "$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 [ -
    "$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.

    [​IMG]
    При запуске выдает что то не знакомое для Freebsd ))
     
  2. trial

    trial

    Сообщения:
    38
    Симпатии:
    3
    это для запуска cs сервера?
     
  3. Glum

    Glum

    Сообщения:
    9
    Симпатии:
    0
    Можно приспособить для запуска любого хл сервера
     
  4. criminalist

    criminalist

    Сообщения:
    191
    Симпатии:
    20
    Да для него, и как сказано выше можно и переделать)
    я переделал под freebsd для запуска ксс

    [​IMG]
     
    Последнее редактирование: 23 янв 2011