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

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

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

14-дек
24-апр
10-апр
11-апр

История благодарностей участнику mclaren ::: Спасибо сказали: 25
Дата поста: В теме: За сообщение: Спасибо сказали:
20.1.2015, 19:26 Школо-DOS
Цитата(Strannik89 @ 20.1.2015, 15:52) *
Уважаемые форумчане. Я на линуксе недавно. Сегодня заметил что сервер мой досят. подскажите плз как установить ип человека кто досит? мб есть защита (знаю что платных море но далеко не все вы их покупаете).... Ось Debian 6 x64

Я за частую для начала смотрю подробные логи что пишет сам сервер. qconsole если таковой имеется, или в папке logs.

А вообще, я сделал проще. xtable-addons + geoip + iptables (-I INPUT ! -i lo -m geoip ! --src-cc UA,RU -j DROP)
cstriker
19.3.2013, 20:28 Выбор Античита без клиентской части
Доброго времени суток. Дабы не создавать тему с вопросом и не разводить лишнего флуда прошу всех желающих проголосовать за известные античиты приведенные в голосовании.
Прошу так же отдовать свои голоса адекватно, то бишь, учитывая качество работы античита, а не так "Нравится и все тут".
Если что то забыл добавить напомните или поправьте. =))


PS. Думаю результаты голосвания будут полезны для многих, а так же помогут избежать создание лишних тем.
ЗЫ. Вписал все те что видел на данном форуме и наиболее актуальны в обсуждении.

АХ да забыл. Если спользуйте несколько античит плагинов то бишь (один против ВХ, дургой против алиасов/скриптов, третий против аима и т.д.) Указывайте какие используете, так как в опрос все впихивать не очень хорошо =)

Цитата
Alias Checker - 1
Aim detector - 5
OpenglDetector - 4
Speedhack Detector - 3
Hacks Detector - 2
sbguardian - 4
apTmusic, gudaus
20.6.2011, 23:05 Faq По Созданию Надёжной, Быстрой Платформы Для Игрового Сервера Из Gentoo Linux © Shadowboss
Tamplier,
Оо, спасибо большое! =)) Выручил не меня одного )))) желающих было много =))

Кстати, пока на время отсутствия статьи от Corax'a, тут есть полезная на мой взгляд информация по оптимизации ядра.
Ссылка тут
http://wiki.fragaholics.de/index.php/EN:Linux_Kernel_Optimization

PS.Для более менее понимающих английский =))
_Skyline, 330863
14.4.2011, 22:04 RCON Defencer
Цитата(BeCeJ|b||/| @ 14.4.2011, 20:49) *
Брутят тебя балбес что ж тут непонятного...

Самое интересное, что меня вот брутят уже наверно пол года точно, до сих пор в логах инфа, но ведь если юзают прогу, то этому человеку рано или поздно надоест, ведь полгода брутом заниматься это уж сума сойти можно....

Цитата(Nobody @ 25.1.2011, 17:47) *
есть ли возможность у этого плагина давать автобан тем, кто пытается подобрать ркон.. например, после 2-3 неудачной попытки??
если нет - то, подскажите, как это сделать?))

Так есть же стандартные настройки (Серверные cvar) в которых помечается, через сколько попыток сервер автоматом даст бан, после определенного количества неудачных попыток ввести rcon.
Rcon cvar's
// Количество минут на которое будет забанен игрок 1 - 60 max, если он не пройдет RCON аутентификацию
// По умолчанию: 0 (0 = Навсегда)
sv_rcon_banpenalty 15

// Максимальное число попыток пользователя ввести правильный пароль 1 - 20 max,
// по истечении этого кол-ва попыток игрок будет забанен.
// По умолчанию: 10
sv_rcon_maxfailures 3

// Максимальное число попыток пользователя ввести правильный пароль 1 - 20 max,
// по истечении этого кол-ва попыток игрок будет заблокирован на время указанное в следующем пункте.
// По умолчанию: 5
sv_rcon_minfailures 1

// Количество секунд до разрешения повторно ввести RCON пароль, если сначала он был введен не правильно.
// По умолчанию: 30
sv_rcon_minfailuretime 30

// Записывать в логи действия связанные с RCON или нет.
// По умолчанию: 1
sv_rcon_log 1
ZeroXL
12.2.2011, 18:19 Faq По Созданию Надёжной, Быстрой Платформы Для Игрового Сервера Из Gentoo Linux © Shadowboss
Цитата(balaban @ 12.2.2011, 3:48) *
c0rax,
До тебя не допишешся..

АХахах, аналогично xDDD


Я думаю надо ему скинуться по 300р будет денежная компенсация за труды! =)))
_Skyline, c0rax
12.2.2011, 18:18 Долгий коннект к серверу, a иногда и FAIL
Я помню на убунте пользовался утилитой FireStarter, она сама расписывала за тебя iptables, а ты только указываешь какой порт необходимо открыть и т.д....Но возможно это правда что-то в фаерволе.
А вот тестить лучше всего, не отключать плагины по отдельности, а просто иметь под рукой чистый скаченный сервер, и на него пробовать заходить, вот если зайдет без проблем, то станет понятна причина, если так же все будет, то копать уже надо в сторону ОС. И еще условие, не стоит ли по пути к провайдеру или у тебя дома каких то маршрутизаторов или роутеров, которые так же могут содержать в себе фаерволл.
empy
9.2.2011, 23:30 Faq По Созданию Надёжной, Быстрой Платформы Для Игрового Сервера Из Gentoo Linux © Shadowboss
c0rax,
Верни статью! Хотя бы под спойлер ее вбей, как старую статейку! =(((
_Skyline
3.2.2011, 2:35 ticrate
Цитата(c0rax @ 3.2.2011, 1:04) *
Ну имелось в виду то, если помимо hlds еще что-то будет использоваться..
а если только hlds то x86 вполне сойдет.

Ааа, ну у меня в принципе стоит только apache+mysql+php на котором используется только amxbans...Когда ты мне настраивал nginx =)), у меня потом хард полетел. А так, я понимаю что и х32_86 подойдет для использования hlds+web server?
ps. Поделись мануалом своим, а то ты его реконструируешь, а я по нему ставил генту и вообще уже давно это делал и забыл некоторые детали.

Цитата(dasjke @ 3.2.2011, 2:45) *
Люди, запутался я с Вашими переменными, один говорит одно, другой - другое. Имеются мощные серверные машины. Ось - debian lenny (stable).
Код
*@?:~/cs16$ uname -a
Linux * 2.6.26-2-amd64 #1 SMP Thu Nov 25 04:30:55 UTC 2010 x86_64 GNU/Linux


При sys_tickrate 1000 && fps_max 1000 происходит следующая картина:

Код
stats
CPU   In    Out   Uptime  Users   FPS    Players
2.00  0.00  0.00       1     0  916.59       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
2.25  0.00  0.00       1     0  931.10       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
2.00  0.00  0.00       1     0  934.58       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
2.00  0.00  0.00       1     0  937.21       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
2.00  0.00  0.00       1     0  906.62       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
2.00  0.00  0.00       1     0  931.10       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
5.00  0.00  0.00       1     0  945.18       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
5.00  0.00  0.00       1     0  934.58       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
3.00  0.00  0.00       1     0  938.97       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
2.00  0.00  0.00       1     0  932.84       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
2.50  0.00  0.00       1     0  919.96       0


Желательна стабильность. Иметь 1к фпс необходимо для gather серверов.
UPD: Прошу прощения за громоздкий текст, тег спойлара глючный и придирчивый до ужаса - так и не понял что ему не нравится.

У тебя стабильность ух какая хорошая, не парься по этому поводу, стрельба на сервере должна быть замечательная, могу даже проверить, уж толк и тонкости стрельбы я знаю. Поставь ФПС просто 1100 и будет 1000 показывать +-. А вот если как у меня будет прыгать (ticrate 500) 240-300-500 это уже плохо.
Но ты лучше эти показатели фпс выкладывай тогда, когда у тебя сервер заполнен хотя бы больше чем на половину, там виднее будет.
ps.
Код
[spoiler=name]abcd[/spoiler]



Но по теме. Я использовал настройки таковы, sys_ticrate 550, в скрипте запуска -pingboost 3 +sys_ticrate 550, nice -20 (особенно многое изменил параметр nice), стрельба стала четкая и кучная, но фпс все же прыгало, мне не обязательно что бы оно было постоянно столько сколько я укажу, но хотя бы что бы интервал в этих прыжках не был в 200. Хотя бы от 450-550. Или мне на самом деле лучше поставить х32 гентуху и в ядре покопаться получше?Повырезать всякое барахло... Разница то будет? А то говорите мол сервера заточены под х32 системы...
А то тут слышал (как всегда слухи), что мол скачки фпс на линуксах это не излечимо и что лучше ставить Windows Server 2008(2003) и там фпс не прыгает, и сервера стабильнее работают...
И вообще, лучше ли сервер прикручивать к одному ядру или же не важно, можно и на 2х?
dasjke
2.2.2011, 15:12 Упрощенная консоль.
Вот эту строчку изменить
Цитата
$INTR ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port

на вот такую
Цитата
$INTR nice -15 ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port

nice -15 приоритет.
sabas
2.2.2011, 3:37 Упрощенная консоль.
Простой и понятный скрипт.
Присутствуют команды start | stop | restart | status | console

script v0.92

Код
#!/bin/bash

### BEGIN INIT INFO
# Provides:          hlds
# 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 HLDS Server
# Description:       HLDS Start Script
#
# author: LeXiKoN http://eqline.ru
# version: 0.92
#
### END INIT INFO

# Source function library.
. /sbin/functions.sh

VERSION=0.92

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

SERVER_NAME="Classic server" #Название сервера
screen_name=Server_classic #Название screen-сессии
path="/home/hldsserver"  #Путь до ROOT-директории сервера
hlds_ip=127.0.0.1  #IP сервера
hlds_port=27017  #Порт сервера
hlds_gametype=cstrike  #Тип игры
hlds_players=28  #Максимальное количество игроков на сервере
hlds_map=de_dust2  #Имя первоначальной карты при запуске
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="-pingboost 3 +exec server.cfg -secure -master +sv_lan 0"  #Дополнительные параметры запуска
use_user=root #Имя юзера от которого запускается сервер
condebug=1
check_version=0
checker_command="quakestat" #Команда пакета qStat отвечающего за проверку сервера

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

#################    ВНИМАНИЕ    ###################
#
# Строчки ниже, если не знаете, лучше не трогать!
#
#################    ВНИМАНИЕ    ###################
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
    hlds_options2="-condebug"
fi

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

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

prestart_check() {
    if [ -f $path/$hlds_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/$hlds_pid
        fi
    fi
}

start() {
    if [ $check_version = 1 ]; then
        check_version
    fi
    # Проверка престартовая
    prestart_check
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cd $path
    $INTR ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port $hlds_options $hlds_options2 -pidfile $hlds_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$hlds_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/$hlds_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/$hlds_pid ] && [ -f $path/$screen_pid ]; then
        # Извлекаем ID процесса из файла и увибаем процессы
        kill `cat $path/$hlds_pid`
        kill `cat $path/$screen_pid`
        sleep 1
        rm -rf $path/$screen_pid
        rm -rf $path/$hlds_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$hlds_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/$hlds_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/hlds_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-скрипт-запуска-hlds-серверов/ \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="[HLDS-CheckUP]"
    checkdown=`$checker_command -P -a2s $hlds_ip:$hlds_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 $hlds_ip:$hlds_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 $hlds_ip:$hlds_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 $hlds_ip:$hlds_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


script v0.94
#!/bin/bash

### BEGIN INIT INFO
# Provides: hlds
# 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 HLDS Server
# Description: HLDS Start Script
#
# author: LeXiKoN http://eqline.ru
# version: 0.94
#
### END INIT INFO

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

VERSION=0.94

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

SERVER_NAME="My Server" #Название сервера
screen_name=server #Название screen-сессии
path="/home/hlds/server/" #Путь до ROOT-директории сервера
hlds_ip=0.0.0.0 #IP сервера
hlds_port=27015 #Порт сервера
hlds_gametype=cstrike #Тип игры
hlds_players=20 #Максимальное количество игроков на сервере
hlds_map=de_inferno #Имя первоначальной карты при запуске
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="-pingboost 3 +exec server.cfg +log on" #Дополнительные параметры запуска
use_user=hlds #Имя юзера от которого запускается сервер
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 -eq 1 ]; then
hlds_options2="-condebug"
fi

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

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

prestart_check() {
if [ -f $path/$hlds_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/$hlds_pid
fi
fi
}

start() {
if [ "$check_version" -eq 1 ]; then
check_version
fi
# Проверка престартовая
prestart_check
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cd $path
$INTR sudo -u $use_user ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port $hlds_options $hlds_options2 -pidfile $hlds_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$hlds_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/$hlds_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" -eq 1 ]; then
check_version
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
# Извлекаем ID процесса из файла и увибаем процессы
kill `cat $path/$hlds_pid`
kill `cat $path/$screen_pid`
sleep 1
rm -rf $path/$screen_pid
rm -rf $path/$hlds_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" -eq 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$hlds_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" -eq 1 ]; then
check_version
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if [ -f $path/$hlds_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" -eq 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/hlds_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-скрипт-за...-hlds-серверов/ \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
}

check_logsize() {
printf "\033[1;35m Проверка размера .log файлов \033[0m\n"
maxlogsize=10485760
if [ -f $path/checker.log ]; then
sizeCheckUP=`stat -c%s $path/checker.log`
printf "\033[1;36m Размер checker.log:\033[0m \033[1;34m $sizeCheckUP байт\033[0m\n"
if [ "$sizeCheckUP" -ge "$maxlogsize" ]; then
printf "\033[1;31m Очищаю файл checker.log\033[0m\n"
tail -n 50 $path/checker.log > $path/checker.temp
mv $path/checker.temp $path/checker.log
sleep 1
fi
else
printf "\033[1;31m Файл checker.log отсутствует\033[0m\n"
fi
if [ -f $path/cstrike/qconsole.log ]; then
sizeQconsole=`stat -c%s $path/cstrike/qconsole.log`
printf "\033[1;36m Размер qconsole.log:\033[0m \033[1;34m $sizeQconsole байт\033[0m\n"
if [ "$sizeQconsole" -ge "$maxlogsize" ]; then
printf "\033[1;31m Очищаю файл qconsole.log\033[0m\n"
tail -n 50 $path/cstrike/qconsole.log > $path/cstrike/qconsole.temp
mv $path/cstrike/qconsole.temp $path/cstrike/qconsole.log
sleep 1
fi
else
printf "\033[1;31m Файл qconsole.log отсутствует\033[0m\n"
fi
}

checker() {
checktag="[HLDS-CheckUP]"
checkresponse=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep response`
if [ -n "$checkresponse" ]; then
printf "\033[1;37m$checktag\033[0m $SERVER_NAME \033[31m*[No response]*\033[0m\n"
# echo Отсылаем почту
cd $path
time=`date +%X`
date=`date +%D`
inlog=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep response`
printf "[$time - $date] *[No response]* $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
checkdown=`$checker_command -P -a2s $hlds_ip:$hlds_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 $hlds_ip:$hlds_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 $hlds_ip:$hlds_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 $hlds_ip:$hlds_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
;;
update)
check_version
;;
checker)
checker
;;
logsize)
check_logsize
;;
*)
echo "Usage: $0 {start|stop|restart|status|console|compile|update|checker|logsize}"
exit 1
esac
exit 0


ps.В этой теме оригинал скрипта отличный от этой темы.-> https://c-s.net.ua/forum/topic27162.html
Cracky, Flash
26.1.2011, 17:18 ticrate
У меня вот такой скрипт запуска.
Было так
#!/bin/bash

### BEGIN INIT INFO
# Provides: hlds
# 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 HLDS Server
# Description: HLDS Start Script
#
# author: LeXiKoN http://eqline.ru
# version: 0.92
#
### END INIT INFO

# Source function library.
. /sbin/functions.sh

VERSION=0.92

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

SERVER_NAME="Server Classic"
screen_name=Server_Classic
path="hlds_classic"
hlds_ip=
hlds_port=
hlds_gametype=cstrike
hlds_players=32
hlds_map=de_dust2
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="-conedebug -pingboost 1 +exec server.cfg -secure -nomaster +sv_lan 0"
use_user=root
condebug=1
check_version=0
checker_command="quakestat"

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
hlds_options2="-condebug"
fi

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

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

prestart_check() {
if [ -f $path/$hlds_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/$hlds_pid
fi
fi
}

start() {
if [ $check_version = 1 ]; then
check_version
fi
# Проверка престартовая
prestart_check
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cd $path
$INTR ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port $hlds_options $hlds_options2 -pidfile $hlds_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$hlds_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/$hlds_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/$hlds_pid ] && [ -f $path/$screen_pid ]; then
# Извлекаем ID процесса из файла и увибаем процессы
kill `cat $path/$hlds_pid`
kill `cat $path/$screen_pid`
sleep 1
rm -rf $path/$screen_pid
rm -rf $path/$hlds_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$hlds_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/$hlds_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/hlds_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-скрипт-за...-hlds-серверов/ \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="[HLDS-CheckUP]"
checkdown=`$checker_command -P -a2s $hlds_ip:$hlds_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 $hlds_ip:$hlds_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 $hlds_ip:$hlds_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 $hlds_ip:$hlds_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


А станет вот так?
#!/bin/bash

### BEGIN INIT INFO
# Provides: hlds
# 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 HLDS Server
# Description: HLDS Start Script
#
# author: LeXiKoN http://eqline.ru
# version: 0.92
#
### END INIT INFO

# Source function library.
. /sbin/functions.sh

VERSION=0.92

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

SERVER_NAME="Server Classic"
screen_name=Server_Classic
path="hlds_classic"
hlds_ip=
hlds_port=
hlds_gametype=cstrike
hlds_players=32
hlds_map=de_dust2
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="-conedebug -pingboost 3 +exec server.cfg +sys_ticrate 1100 -secure -nomaster +sv_lan 0"
use_user=root
condebug=1
check_version=0
checker_command="quakestat"

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
hlds_options2="-condebug"
fi

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

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

prestart_check() {
if [ -f $path/$hlds_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/$hlds_pid
fi
fi
}

start() {
if [ $check_version = 1 ]; then
check_version
fi
# Проверка престартовая
prestart_check
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cd $path
$INTR nice -15 ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port $hlds_options $hlds_options2 -pidfile $hlds_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$hlds_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/$hlds_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/$hlds_pid ] && [ -f $path/$screen_pid ]; then
# Извлекаем ID процесса из файла и увибаем процессы
kill `cat $path/$hlds_pid`
kill `cat $path/$screen_pid`
sleep 1
rm -rf $path/$screen_pid
rm -rf $path/$hlds_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$hlds_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/$hlds_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/hlds_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-скрипт-за...-hlds-серверов/ \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="[HLDS-CheckUP]"
checkdown=`$checker_command -P -a2s $hlds_ip:$hlds_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 $hlds_ip:$hlds_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 $hlds_ip:$hlds_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 $hlds_ip:$hlds_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
Grape Fruit
1.10.2010, 19:16 Флуд атака видимо?!
Цитата
старый хлам от румынских дибилов ))))

Лишним не будет. Где то все же советуют.На крайняк, почему бы не поставить =))
aleshqa
1.10.2010, 14:25 Флуд атака видимо?!
1. Нет
2. Да
3. Нет



Должно блокировать его. Ставь еще AntiCS DOS By Shocker если у тебя Windows.
aleshqa
29.9.2010, 23:12 Флуд атака видимо?!
Цитата
L 09/25/2010 - 17:13:19: "moi skype gansig1<23><STEAM_ID_LAN><>" connected, address "178.129.78.142:27005"



Знаю я такого. Он меня тоже досил. Нубик он и все. Принцип доса его простой, заходит на сервер, пускает спам, делаешь рестарт сервера, он пропадает и больше не досит до тех пор, пока сам в ручную не запустит опять. Короче говоря разводить хотел. Я ему сказал удачи, в итоге забанил его к чертовой матери. =)) Больше не тревожит.
Любые виды банов через игру и через функции amxmodx'a не помогут, так как он подключается в режиме fake игрока. Его нету в списках, а соответственно и бан не дать в игре ему ни как.
Баньте подсеть ему.
178.129.0.0
Если сидите на WinXP ставьте Outpost Firewall Pro 2009 там и блочить.
Если линукс, то там немного иначе. =)
aleshqa
21.8.2010, 19:53 Скрипт запуска.
Цитата(Mzerder @ 21.8.2010, 19:33) *
Я найду дела поважнее споров с детьми.

Больше всего меня убивало когда на мой ответ другого человека, тот пишет подобную ахинею "споры с детьми", " ты ребенок", "иди учись в школу" и так далее...
Я то не обращаю внимание на это, но просто поражало то, что человек не зная меня вообще, пишет что я ребенок...так поступает только глупый и полный гонора, в данном случае парень.
Приятного чаепития, не поперхнись умник.
_Skyline, Саша
28.4.2010, 2:17 Csfile.info Anti-cheat V1.23 Release Fixed 3 (06.01.2011)
Надо его (-)>C-r-A-c-K...,'а) спонсировать, тогда и версия выйдет быстрее. =)) Работаешь в свое удовольствие это одно, а когда еще за это и деньги идут так все и быстрее поедет =)))

А античит хороший. Единственно (возможно мой глюк) пинг повышался не значительно....
-)>C-r-A-c-K<(-, SilverFire