Shell‑скрипты, Ansible, deployment‑сценарии и другие подходы к автоматизации задач администрирования.
Правила форума
Убедительная просьба юзать теги [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" ?
cubespace
-
Хостинг HostFood.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
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
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 )&
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
cubespace
- мл. сержант
- Сообщения: 114
- Зарегистрирован: 2010-02-25 0:23:15
Непрочитанное сообщение
cubespace » 2011-06-25 1:52:41
Что то не получается(((
или не так делаю((
Но не запускается от пользователя, запуск идет от root
sockstat -4
cubespace
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2011-06-25 23:06:53
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
cubespace
- мл. сержант
- Сообщения: 114
- Зарегистрирован: 2010-02-25 0:23:15
Непрочитанное сообщение
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 *:*
cubespace
-
EARL
- мл. сержант
- Сообщения: 85
- Зарегистрирован: 2010-05-24 9:05:18
- Откуда: Тамбов
Непрочитанное сообщение
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 скрипт для запуска нужной версии сервера в зависимости от вашего процессора.
EARL