Скрипт запуска игры

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
cubespace
мл. сержант
Сообщения: 114
Зарегистрирован: 2010-02-25 0:23:15

Скрипт запуска игры

Непрочитанное сообщение cubespace » 2011-06-23 12:44:13

Здравствуйте!

FreeBSD 8.0

Есть скрипт запуска игры "Counter Strike 1.6"
Он же еще используется для запуска игры "BF2"

Код: Выделить всё

#!/bin/sh
. /etc/rc.subr
export PATH=${PATH}:/usr/local/bin
name="cs1"
rcvar=`set_rcvar`
CS1_DIR=/usr/games/cs_1
cd $CS1_DIR
start_cmd="cs1_start"
restart_cmd="cs1_restart"
stop_cmd="cs1_stop"

[ -z "$cs1_enable" ] && cs1_enable="YES"

cs1_start ()
{
        checkyesno cs1_enable &&
        {
                echo "Starting cs1."
               /usr/local/bin/screen -d -m -A -S bf2 '/usr/games/cs_1/start_cs1.6.sh'
        }
}

cs1_restart ()
{
        checkyesno cs1_enable &&
        {
                echo "Restarting cs1."
                killall -9 cs1
                screen -d -m -S bf2 '/usr/games/cs_1/start_cs1.6.sh'
        }
}

cs1_stop ()
{
        checkyesno cs1_enable &&
        {
                echo "Stoping cs1."
                killall -9 cs1
        }
}

load_rc_config $name
run_rc_command "$1"



#cat start_cs1.6.sh

Код: Выделить всё

#!/bin/sh
cd /usr/games/cs_1/
./hlds_run -game cstrike -console -debug -insecure -nomaster +sv_lan 1 +maxplayers 32 +map de_dust -norestart +ip 0.0.0.0 -port 27038 +log on -notrap
Но запуск игры идет от пользователя "ROOT"
Что именно добавить что бы скрипт запускал игру от пользователя "USER1" ?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Скрипт запуска игры

Непрочитанное сообщение kpp » 2011-06-24 17:04:47

Где-то так:

Код: Выделить всё

( /usr/bin/su USER1; cd /usr/games/cs_1/;
./hlds_run -game cstrike -console -debug -insecure -nomaster +sv_lan 1 +maxplayers 32 +map de_dust -norestart +ip 0.0.0.0 -port 27038 +log on -notrap )&
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
cubespace
мл. сержант
Сообщения: 114
Зарегистрирован: 2010-02-25 0:23:15

Re: Скрипт запуска игры

Непрочитанное сообщение cubespace » 2011-06-25 1:52:41

Что то не получается(((
или не так делаю((

Но не запускается от пользователя, запуск идет от root

sockstat -4

Код: Выделить всё

root     srcds_i686 1827  7  tcp4   *:27038 

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Скрипт запуска игры

Непрочитанное сообщение kpp » 2011-06-25 23:06:53

Код: Выделить всё

su -c -m start_cs1.6.sh USER1
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
cubespace
мл. сержант
Сообщения: 114
Зарегистрирован: 2010-02-25 0:23:15

Re: Скрипт запуска игры

Непрочитанное сообщение cubespace » 2011-06-26 15:04:19

незнаю правильно ли такой вариант ?

Но так стартовало )

Код: Выделить всё

/usr/bin/su -c -m USER1 '/usr/games/cs_1/start_cs1.6.sh'

Код: Выделить всё

USER1      hlds_i686      22488    5   udp4     *:27038               *:*
USER1      hlds_i686      22488    12  udp4     *:26900               *:*
USER1      hlds_i686      22487    5   udp4     *:27038               *:*
USER1      hlds_i686      22487    12  udp4     *:26900               *:*
USER1      hlds_i686      22486    5   udp4     *:27038               *:*
USER1      hlds_i686      22486    12  udp4     *:26900               *:*


Аватара пользователя
EARL
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-05-24 9:05:18
Откуда: Тамбов

Re: Скрипт запуска игры

Непрочитанное сообщение EARL » 2011-08-03 20:16:24

У меня скрипт для запуска cs16 примерно такого вида

Код: Выделить всё

#!/bin/sh
#
# PROVIDE: cs16
# REQUIRE: DAEMON
#

. /etc/rc.subr

name="cs16"
rcvar=${name}_enable
pidfile="${name}.pid"
start_cmd=cs16_start
stop_cmd=cs16_stop
server_args="+ip 127.0.0.1 +maxplayers 11 +map de_dust2"

load_rc_config ${name}
eval ": \${${name}_enable:=\"NO\"}"

cs16_start()
{
    cd $(eval echo "\${${name}_chdir}")
    if [ -f $pidfile ]; then
        pid=`cat $pidfile`
        echo "$name already running? (pid=$pid)."
    else
        echo "Starting $name."
        su -l $(eval echo "\${${name}_user}") -c "cd $(eval echo \"\${${name}_chdir}\") && \
        export LD_LIBRARY_PATH=\".:$LD_LIBRARY_PATH\" && \
        /usr/local/bin/screen -A -m -d -S cs16 ./hlds_amd -game cstrike -pidfile $pidfile $server_args"
    fi
}

сs16_stop()
{
    cd $(eval echo "\${${name}_chdir}")
    if [ -f $pidfile ]; then
        echo "Stopping $name."
        pid=`cat $pidfile`
        kill -15 $pid
        rm $pidfile
    else
        echo "$name not running?"
    fi
}

run_rc_command $1

Дальше создаете пользователя, например cs16. В папку /home/cs16/server скачиваете сервер игры и тогда в rc.conf останется добавить такие строчки

Код: Выделить всё

cs16_enable="YES"
cs16_user="cs16"
cs16_chdir="/home/cs16/server"
Сервер будет стартовать от заданного пользователя.

PS Единственно стоит заметить, что я запускаю не hlds_run, а напрямую hlds_amd. Ну можете подредактировать rc скрипт для запуска нужной версии сервера в зависимости от вашего процессора.