Автор Тема: Linux стартиращ скрипт за Counter-Strike сървъри  (Прочетена 8359 пъти)

KassappineS

  • Напреднали
  • *****
  • Публикации: 26
  • Distribution: Ubuntu 11.10
  • Window Manager: Server
    • Профил
Здравейте видях в един сайт тема която прави така ,че след като се пусне компа се пускат и сървърите ето какво направих и каква грешка ми даде моля за помощ:
sudo su
passa
apt-get install screen
nano /etc/init.d/hns
поставям скрипта вътре:
#!/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='XD-GaminG @ HideNSeek'

SESSION='hlds'

DAEMON='hlds_run'

DIR='/home/pavel/hidenseek'

USER='root'



# Game options

IP='84.40.100.68'

PORT='27016'

MAP='hns_centraltown'

GAME='cstrike'

PLAYERS='21'

TICRATE='600'

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 }'` ==$

      echo -e "Someone is already attached to the console of the serv$

   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


След това:
chmod +x hns
update-rc.d hns defaults 99
Накрая пиша:/etc/init.d/classic start
И ми излезна ето този еррор:/etc/init.d/dust2: 255: Syntax error: Unterminated quoted string
Надявам се ,че ще ми кажете как да оправя грешката :)
« Последна редакция: Nov 14, 2011, 13:40 от KassappineS »
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Какво има на 255-тия ред на във файла: /etc/init.d/dust2
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

KassappineS

  • Напреднали
  • *****
  • Публикации: 26
  • Distribution: Ubuntu 11.10
  • Window Manager: Server
    • Профил
echo "Usage $0 start|stop|restart|watch"
за този рет ли ме питаш?
« Последна редакция: Nov 14, 2011, 13:40 от KassappineS »
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
мисля ,че пише esac

A аз мисля да дадеш кода тука.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

KassappineS

  • Напреднали
  • *****
  • Публикации: 26
  • Distribution: Ubuntu 11.10
  • Window Manager: Server
    • Профил
Прикачил съм самия скрипт незнам за кой код ми гориш(немога да те разбера)
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Ми защото не мислиш, за това не можеш да ме разбереш. Кода на файла в който ти казва че има грешка: /etc/init.d/dust2
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

KassappineS

  • Напреднали
  • *****
  • Публикации: 26
  • Distribution: Ubuntu 11.10
  • Window Manager: Server
    • Профил
Извини ме! :(
Ето го кода:
#!/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='XD-GaminG @ HideNSeek'

SESSION='hlds'

DAEMON='hlds_run'

DIR='/home/pavel/hidenseek'

USER='root'



# Game options

IP='84.40.100.68'

PORT='27016'

MAP='hns_centraltown'

GAME='cstrike'

PLAYERS='21'

TICRATE='600'

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 }'` ==$

      echo -e "Someone is already attached to the console of the serv$

   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

Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Абе човек, не е това бе! Като дадеш:
Код:
sudo /etc/init.d/classic start
Какво съобщение ти вади?

Оле-оле, добре де, ти пишеш тоя код в: /etc/init.d/hns, а после стартираш: /etc/init.d/classic - и то къф зор?
« Последна редакция: Nov 14, 2011, 13:52 от b2l »
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

KassappineS

  • Напреднали
  • *****
  • Публикации: 26
  • Distribution: Ubuntu 11.10
  • Window Manager: Server
    • Профил
Ам аз го бях написал в оказанията за грешката ето го отново:
/etc/init.d/dust2: 255: Syntax error: Unterminated quoted string
Активен

vox

  • Напреднали
  • *****
  • Публикации: 147
  • Distribution: HP-UX, Solaris, AIX
  • Window Manager: console only
  • #!/bin/ksh
    • Профил
нали ти дадох стартиращ скрипт и ти го описах в rc.local ..

Код
GeSHi (Bash):
  1. #!/bin/bash
  2. cd /home/user/dir/
  3. screen -A -m -d -S hlds ./hlds_run -game cstrike +exec server.cfg -ip ip_adress -port game_port -pingbooster 1 +map map_name -noipx -nojoy -verity-all -console +sv_lan 1
« Последна редакция: Nov 14, 2011, 13:56 от vox »
Активен

No Windows, no Gates only apache inside

KassappineS

  • Напреднали
  • *****
  • Публикации: 26
  • Distribution: Ubuntu 11.10
  • Window Manager: Server
    • Профил
Да ама нещо после като съм го редактирал съм го збъркал пък и като пусках сървърите само 1 от тях работеше другите не се пускаха :(
Активен

vox

  • Напреднали
  • *****
  • Публикации: 147
  • Distribution: HP-UX, Solaris, AIX
  • Window Manager: console only
  • #!/bin/ksh
    • Профил
ами защото описваш портовете с +port а те май трябда да се описват с -port
Активен

No Windows, no Gates only apache inside

KassappineS

  • Напреднали
  • *****
  • Публикации: 26
  • Distribution: Ubuntu 11.10
  • Window Manager: Server
    • Профил
Не съм опиствал с +port ако ми говориш за скрипта който ти ми даде!
Само махнах от него +ip което беше
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
ами защото описваш портовете с +port а те май трябда да се описват с -port

Аз го карам да ми покаже съдържанието на файла dust2, той ми вади неговия скрипт. А ти се мъчиш да му обясниш разликата между (+) и (-).
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

KassappineS

  • Напреднали
  • *****
  • Публикации: 26
  • Distribution: Ubuntu 11.10
  • Window Manager: Server
    • Профил
Приятел аз ти дадох 2 пъти съдржанието на файла това е съдржанието скрипта който съм качил вътре освен скрипта има и описани неща за сървъра ип,порт,име и тн.
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Counter-Strike pod GNU/Linux :)
Настройка на програми
Raptor 0 1866 Последна публикация Apr 13, 2003, 11:30
от Raptor
Counter-Strike pod GNU/Linux :)
Хардуерни и софтуерни проблеми
Raptor 0 1985 Последна публикация Apr 13, 2003, 11:55
от Raptor
Counter Strike Server v1.6 за Linux
Общ форум
scraggy 1 3627 Последна публикация Sep 05, 2004, 19:01
от nix
Counter Strike Nativ za linux
Общ форум
kennedy 1 2519 Последна публикация Oct 10, 2004, 01:34
от empty
помощ за counter-strike
Настройка на програми
pankaro 1 2479 Последна публикация Nov 12, 2005, 14:14
от romeo_ninov