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

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

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

02-дек
17-апр
30-дек
29-дек

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

Скрипт запуска HLTV для RH Linux

Статус пользователя Predator.Cat
сообщение 8.5.2013, 15:44
Сообщение #1


Стаж: 10 лет

Сообщений: 251
Благодарностей: 33
Полезность: 119

За основу был взят скрипт запуска HLDS-серверов от LeXiKoN.

Версия: 0.981 от 08.05.2013

Автор исходного скрипта: LeXiKoN.
Автор данного скрипта: Predator.

Сайт поддержки: https://zion.pw/forum/viewtopic.php?f=89&t=1200

ChangeLog:
0.981
    * Релиз


Особенности:
    * Цветовая индикация, что позволит вам легко понять информацию
    * Распределение по ядрам сеансов HLTV
    * Подключение по команде к консоли HLTV
    * Определение статуса работы HLTV
    * Предстартовая проверка на запущенный сеанс HLTV
    * Создание PID-файлов запущенных процессов HLTV и сеансов screen


Требования:
    * Дистрибутив Linux семейства RedHat
    * Установленный пакет screen (sudo yum install screen)


Установка:
    1. Скачиваем архив, распаковываем.

    2. Открываем hltv в текстовом редакторе и конфигурируем:

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

    HOST_NAME="My Server"                           #Название хоста
    screen_name=hltv                                #Название screen-сессии
    path="/opt/hlds/"                               #Путь до ROOT-директории hlds-сервера
    hltv_pid=hltv.pid                               #Имя PID-файла HLTV
    screen_pid=$screen_name-screen.pid              #Имя PID-файла screen
    server_ip=0.0.0.0                               #IP сервера, к которому подключаем HLTV
    server_port=27015                               #Порт сервера, к которому подключаем HLTV
    hltv_port=28048                                 #Порт HLTV
    rec_path="/demos/HLTV_"                         #Путь_(относительно_каталога_cstrike)/префикс_в_имени_демки
    hltv_options=""                                 #Дополнительные параметры
    use_user=hlds                                   #Имя юзера от которого запускается HLTV

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

    4. Сохраняем и копируем hltv в /etc/init.d/

    5. Даём права на выполнение:
    Код
    chmod +x /etc/init.d/hltv

    6. Копируем hltv_run в корневую директорию вашего hlds-сервера (например, /opt/hlds/)

    7. Даём права на выполнение:
    Код
    chmod +x /opt/hlds/hltv_run

    8. Копируем библиотеку director_i386.so в ./cstrike/dlls/ (если её там нет)

    9. Даём права на выполнение:
    Код
    chmod +x /opt/hlds/cstrike/dlls/director_i386.so

    10. Не забываем настроить hltv.cfg (об этом есть куча тем в Интернете, поэтому здесь я писать об этом не буду)

    11. Добавляем демон в автозагрузку:
    Код
    chkconfig hltv on

Готово!

Использование::
    Запуск:
    Код
    service hltv start

    Остановка:
    Код
    service hltv stop

    Рестарт:
    Код
    service hltv restart

    Проверка статуса:
    Код
    service hltv status

    Подключение к консоли:
    Код
    service hltv console


hltv

Код
#!/bin/bash
# chkconfig: 2345 95 20
# description: HLTV Start Script
# Start HLTV Proxy
# processname: hltv
# 1st_author: LeXiKoN http://eqline.ru
# 2nd_author: Predator http://zion.org.ru
# version: 0.981

# Source function library.
. /etc/rc.d/init.d/functions

VERSION=0.981

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

HOST_NAME="My Server"         #Название хоста
screen_name=hltv                  #Название screen-сессии
path="/opt/hlds/"                  #Путь до ROOT-директории hlds-сервера
hltv_pid=hltv.pid                  #Имя PID-файла HLTV
screen_pid=$screen_name-screen.pid          #Имя PID-файла screen
server_ip=0.0.0.0              #IP сервера, к которому подключаем HLTV
server_port=27015                  #Порт сервера, к которому подключаем HLTV
hltv_port=28048                  #Порт HLTV
rec_path="/demos/HLTV_"              #Путь_(относительно_каталога_cstrike)/префикс_в_имени_демки
hltv_options=""                  #Дополнительные параметры
use_user=hlds                     #Имя юзера от которого запускается HLTV

#----------------------------------------------------
# Номер ядра/процессора в линуксе
# 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"

hltv_run=$path/hltv_run

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

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

prestart_check() {
    if [ -f $path/$hltv_pid ] && [ -f $path/$screen_pid ]; then
        ch=`ps -ef | grep SCREEN | grep $screen_name`
        if [ -n "$ch" ]; then
            printf "$title\033[1;34m HLTV на $HOST_NAME\033[0m \033[32m(!!) УЖЕ запущен (!!)\033[0m\n"
            exit 1
        else
            rm -rf $path/$screen_pid
            rm -rf $path/$hltv_pid
        fi
    fi
}

start() {
# Предстартовая проверка
    prestart_check
    cd $path
# Запускаем HLTV
    $INTR sudo -u $use_user $hltv_run +connect $server_ip:$server_port -port $hltv_port +record $rec_path +exec hltv.cfg $hltv_options
# Создаём PID вручную, так как у HLTV отсутствует такой параметр
    touch "$hltv_pid"
    ps -ef | grep HLTV | grep "hltv" | grep -v grep | awk '{ print $2}' > $path/$hltv_pid
# Поиск и запись пидов процессов скрина в системе
    ps -ef | grep SCREEN | grep "$screen_name" | grep -v grep | awk '{ print $2}' > $path/$screen_pid
    printf "$title\033[1;34m Запуск HLTV на $HOST_NAME \033[0m\n"
    printf "\t\033[1;35m Привязка к ядру:\033[0m \033[1;36m$use_core\033[0m\n"
    printf "\t\033[1;35m Запуск от юзера:\033[0m \033[1;36m$use_user\033[0m\n"
    printf "\t\033[1;33m Статус: \033[0m"
    sleep 1
    if [ -f $path/$hltv_pid ] && [ -f $path/$screen_pid ]; then
        ch=`ps -ef | grep SCREEN | grep $screen_name`
        if [ -n "$ch" ]; then
            printf "$succes\n"
        else
            printf "$failed\n"
        fi
    else
        printf "Creating $hltv_pid or $screen_pid FAILED!"
    fi
}

stop() {
    if [ -f $path/$hltv_pid ] && [ -f $path/$screen_pid ]; then
# Останавливаем HLTV!!
        printf "$title\033[1;31m Остановка HLTV на $HOST_NAME \033[0m"
        /usr/bin/screen -R $screen_name -p 0 -X register . quit
        /usr/bin/screen -R $screen_name -p 0 -X paste .
        /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n'
        sleep 1
        /usr/bin/screen -R $screen_name -X quit > /dev/null
        sleep 1
        rm -rf $path/$screen_pid
        rm -rf $path/$hltv_pid
        printf "$succes\n"

    else
        printf "\033[1;34m Невозможно остановить HLTV на $HOST_NAME, HLTV НЕ запущен \033[0m"
        printf "$failed\n"
    fi
}

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

console() {
    if [ -f $path/$hltv_pid ] && [ -f $path/$screen_pid ]; then
        printf "$title\033[1;34m Подключение к консоли HLTV $HOST_NAME \033[0m\n"
        printf "\t\033[36m Для выхода из консоли поочерёдно нажать \033[1;36mCtrl+A, D \033[0m\n"
        printf "\t\033[36m Для листинга консоли поочерёдно нажать \033[1;36mCtrl+A, Esc \033[0m\n"
        printf "\t\033[36m Для выхода из режима листинга нажать \033[1;36mEsc \033[0m\n"
        concnt=5
        while [ $concnt -gt 0 ]; do
            echo -en "\r\t Консоль включится через $concnt сек "
            let concnt=concnt-1
                       sleep 1
        done
        /usr/bin/screen -R $screen_name
        printf "\t$succes\n"
    else
        printf "\033[1;31m Невозможно подключиться к консоли HLTV $HOST_NAME, HLTV не запущен \033[0m\n"
    fi
}


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



hltv_run

Код
#!/bin/bash

path=.
cd $path

LD_LIBRARY_PATH=$path;
export LD_LIBRARY_PATH

./hltv $@



© При копировании данного поста ссылка на источник обязательна: https://zion.pw/forum/viewtopic.php?f=89&t=1200

Отредактировал: Predator.Cat, - 11.7.2017, 13:25
Причина: отредактировано
Прикрепленные файлы:
Прикрепленный файл  HLTV.zip ( 70,31 килобайт ) Кол-во скачиваний: 186
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: