Автор Тема: Проблем с портовете при Debian 6.  (Прочетена 2190 пъти)

BigBore

  • Напреднали
  • *****
  • Публикации: 67
    • Профил
Re: Проблем с портовете при Debian 6.
« Отговор #15 -: Feb 23, 2012, 14:45 »
Няма да качвам файловете а направо ще напиша скрипта макар то да е дълъг.

Скрипт:
Цитат
"#!/bin/sh
### BEGIN INIT INFO
# Provides:          csservers
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
# This script edit by kostov[Virtual.New.BG]
# Server options
TITLE='Counter-Strike Dedicated Server'
SESSION='hlds'
DAEMON='hlds_run'
DIR='/home/slidenew2'
USER='root'

# Game options
IP='213.145.104.230'
PORT='37015'
MAP='slide_kzfr_woodslide'
GAME='cstrike'
PLAYERS='5'
TICRATE='580'
PINGBOOST='2'
SVLAN='0'
RCON=''

# Server options string
OPTS="-game $GAME +ip $IP +maxplayers $PLAYERS +map $MAP -port $PORT +sv_lan $SVLAN +rcon_password $RCON +sys_ticrate $TICRATE -pingboost $PINGBOOST -master  -noipx -nojoy +log off -pidfile $DIR/$GAME/$SESSION.pid"

# Screen command
CURRENT_USER=$(/usr/bin/whoami)
if [ "$CURRENT_USER" = "$USER" ]; then
    INTERFACE="/usr/bin/screen -A -m -d -S $SESSION"
  else
    INTERFACE="sudo -u $USER /usr/bin/screen -A -m -d -S $SESSION"
fi

service_start() {
    if [ -f $DIR/$GAME/$SESSION.pid ] || [ -f $DIR/$GAME/$SESSION-screen.pid ]; then
        if [ "$(ps -p `cat $DIR/$GAME/$SESSION.pid` | wc -l)" -gt 1 ]; then
            echo -e "Cannot start $TITLE.  Server is already running."
        else
            if [ "$(ps -p `cat $DIR/$GAME/$SESSION.pid` | wc -l)" -gt 1 ]; then
                kill -9 `cat $DIR/$GAME/$SESSION-screen.pid`
                echo "Killing process ID $id"
                echo "Removing $TITLE screen pid file"
                rm -rf $DIR/$GAME/$SESSION-screen.pid
   break
            fi
   if [ -f $DIR/$GAME/$SESSION-screen.pid ]; then
   rm -rf $DIR/$GAME/$SESSION-screen.pid
   fi
        echo "Removing $TITLE pid file"
        rm -rf $DIR/$GAME/$SESSION.pid
        screen -wipe 1> /dev/null 2> /dev/null
        service_start
        fi
    else
        if [ -x $DIR/$DAEMON ]; then
            echo "Starting $TITLE"
            cd $DIR
            $INTERFACE $DIR/$DAEMON $OPTS
            sleep 15
            ps -ef | grep SCREEN | grep "$SESSION" | grep -v grep | awk '{ print $2}' > $DIR/$GAME/$SESSION-screen.pid
            echo "$TITLE screen process ID written to $DIR/$GAME/$SESSION-screen.pid"
            echo "$TITLE server process ID written to $DIR/$GAME/$SESSION.pid"
           
            echo "$TITLE started."
            chmod 666 $DIR/$GAME/*.pid #1> /dev/null 2> /dev/null
            chown $USER $DIR/$GAME/*.pid #1> /dev/null 2> /dev/null
            sleep 15
        fi
    fi
}

service_stop() {
    if [ -f $DIR/$GAME/$SESSION.pid ] || [ -f $DIR/$GAME/$SESSION-screen.pid ]; then
        echo "Stopping $TITLE"
        for id in `cat $DIR/$GAME/$SESSION-screen.pid`
            do kill -9 $id
            echo "Killing process ID $id"
            echo "Removing $TITLE screen pid file"
            rm -rf $DIR/$GAME/$SESSION-screen.pid
            break
        done
        echo "Removing $TITLE pid file"
        rm -rf $DIR/$GAME/$SESSION.pid
        screen -wipe 1> /dev/null 2> /dev/null
        echo "$TITLE stopped."
    else
        echo -e "Cannot stop $TITLE. Server is not running."
    fi   
}


service_watch() {
        if [ `screen -wipe | grep $SESSION | grep -v grep | awk '{ print $2 }'` == '(Attached)' ]; then
                echo -e "Someone is already attached to the console of the server.\n Might want to check who"
        else
                screen -r $SESSION
        fi
}


case "$1" in
    'start')
        service_start
        ;;
    'stop')
        service_stop
        ;;
    'restart')
        service_stop
        sleep 10
        service_start
        ;;
   'watch')
      service_watch
      ;;
    *)
        echo "Usage $0 start|stop|restart|watch"
esac

exit 0
"
Това е скрипта,който ми трябва за сървърите.
Ето и упътване как се прави и как се вкарва в линукса.
Цитат
"За Debian базираните:
Код:
apt-get install screen

За RedHat базираните
Код:
yum install screen


2. Правите файл с някакво име в папката /etc/init.d
Код:
nano /etc/init.d/classic

3. Слагате в него съдържанието и го настройвате:
Код:
TITLE='Counter-Strike Dedicated Server' - Най-добре е тук да сложите името на сървъра ви (За да не се бъркате)
SESSION='hlds' - Името на сесията, чрез която по-късно ако ви се наложи да влезнете в конзолата на сървъра
DAEMON='hlds_run' - Името на демота който ще стартирате (Както обикновено той е hlds_run)
DIR='/home/hlds' - Пътя до директорията на сървъра
USER='root' - Под какъв потребител да върви сървъра (Препоръчително е да си остане root)

# Game options
IP='127.0.0.1' - Ип-то на сървъра през което той да тръгне
PORT='27015' - Порта на сървъра
MAP='de_dust2' - Стартиращата карта (С коя карта да тръгне сървъра)
GAME='cstrike' - Коя модификация искате да пуснете (За CS - cstrike. За Half-Life - valve)
PLAYERS='21' - Колко максимални играча да има сървъра
TICRATE='600' - sys_ticrate на сървъра
PINGBOOST='2' - Буустера на сървъра възможности 1, 2 или 3
SVLAN='0' - sv_lan опцията
RCON='' - И rcon паролата (Ако не искате такава оставете това празно)


4. След като сте настроили сървъра е време да му зададем права:
Код:
chmod +x името-на-файла

Пример:
Код:
chmod +x classic


5. Сега време да вкараме скрипта в процесите на Linux-а за Debian базирани:
Код:
update-rc.d името-на-файла defaults 99

Пример:
Код:
update-rc.d classic defaults 99


5. Сега време да вкараме скрипта в процесите на Linux-а за RedHat базирани:
Код:
chkconfig --level 345 името-на-файла on

Пример:
Код:
chkconfig --level 345 classic on
"

Всички стъпки ги знам на изуст и не мисля,че ги бъркам.
Пак казвам само единия скрипт ми стана а другите не.
Ако можеш да ми кажеш с моя скрипт стъпки по-твоя начин как ще стане,за да мога да се ориентирам още.. :)

Активен

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
Re: Проблем с портовете при Debian 6.
« Отговор #16 -: Feb 23, 2012, 21:39 »
Единствено ме съмнява да си въвел едно и също име за всички сървъри:
SESSION='hlds' - за всеки сървър трябва да е различно.
PORT='37015' - за всеки сървър трябва да е различен 37016,37017,37018
Активен

Ако не можеш да градиш, поне не руши!

BigBore

  • Напреднали
  • *****
  • Публикации: 67
    • Профил
Re: Проблем с портовете при Debian 6.
« Отговор #17 -: Feb 23, 2012, 22:16 »
Не всичко е както трябва. В смисъл всичко е различно както трябва да бъде.. Ще вида да направя наново другите скриптове с някой други именна,аджеба тръгне. Но Session там всичките скриптове са с различни.
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BG Debian
Предложения за български проект
asa 0 4983 Последна публикация Sep 25, 2002, 11:52
от asa
Debian i KDE
Настройка на програми
IvanST 9 11914 Последна публикация Jan 05, 2003, 21:54
от n_antonov
Грешка в MBR Debian не стартира!
Настройка на програми
IvanST 8 11236 Последна публикация Jan 07, 2003, 13:36
от IvanST
debian + kde 3.1
Настройка на програми
rat 0 3918 Последна публикация Jan 28, 2003, 17:28
от rat
кои CD-та на Debian ми трябва ?
Настройка на програми
brady 5 8014 Последна публикация Jul 10, 2003, 16:33
от FuckBTK