Страница 1 из 1

screen - проблема посылки команд.

Добавлено: 2010-08-24 12:27:33
RayTraceR
Доброго времени суток уважаемые форумчане!
Собственно проблема:
ОС: FreeBSD 7.2
Версия screen 4.0.3

Есть некоторый консольный сервер, запускаемый из .sh файла. При запуске такового, есть доступ к консоли для введения простых команд, таких как quit и restart.
Есть веб сервер, с php и с установленно библиотекой для работы с SSH2 протоколом. Задача, чтобы запустить консольный сервер в фоне и иметь возможность ввода команд я запускаю его через screen. Вот содержание(manage.sh):

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

#!/bin/sh
#vsftpd &

if [ ${1} = "start" ]
then
cd /home/raytracer/server/
/usr/local/bin/screen -A -m -d -S sess ./server_run -verbose
elif [ ${1} = "stop" ]
then
/usr/local/bin/screen -rd sess -X eval 'stuff quit\015'
elif [ ${1} = "restart" ]
then
/usr/local/bin/screen -rd sess -X eval 'stuff restart\015'
else
action="Unknown action"
fi
Тоесть я через вебсервер посылаю команду из php скрипта для запуска сервера:
$cmd = $ssh->exec('/home/raytracer/server/manage.sh start');
Сервер запускается в фоне, сессия скрина sess создается и детачится. Все норм.

Далее я хочу перезагрузить сервер и посылаю команду:
$cmd = $ssh->exec('/home/raytracer/server/manage.sh restart');
тоесть в скрипте исполняется строчка:
/usr/local/bin/screen -rd sess -X eval 'stuff restart\015'
она означает отдетачиться от остальныйх окон и вернуться в сессию скрина sess и затем отослать команду restart и послать нажатие клавиши Enter символом \015. Но сервер не перезапускается - 0 реакции.

НО! Как только я в tty или же через виндосовский ssh клиент pytty отсылаю команду: screen -rd sess
тоесть отдетачиться от остальныйх окон и вернуться в сессию скрина sess, и затем отключаюсь от сессии (ctrl+A +d) и посылаю через вебсервер команду:
$cmd = $ssh->exec('/home/raytracer/server/manage.sh restart');
Сразу происходит перезапуск сервера. Тоесть необходимо 1 раз присоединиться к сессию, затем все идет нормально, но как сэмулировать запуск через вебсервер.
Пробовал посылать команду, которую мне посоветовал один из участников форума - hizel:
screen -rd sess && /home/raytracer/server/manage.sh restart
Ничего не выходит. Как можно найти решение?

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 12:59:14
masterito
А зачем вам вообще скрин? Чем не устраивает такой вариант:

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

cd /home/raytracer/server/ && ./server_run -verbose &
?

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 13:06:21
RayTraceR
masterito писал(а):А зачем вам вообще скрин? Чем не устраивает такой вариант:

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

cd /home/raytracer/server/ && ./server_run -verbose &
?
С таким вариантом страница с результатом выполнения php скрипты просто навсего зависает, сервер не запускает, php виснет тоже - так как запуск сервера происходит не в фоне. Но даже если я в эту строку добавлю (тоесть в фоне запущу)

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

> /dev/null 2>&1 &
Каким образом я пошлю в консоль сервера команду?

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 13:10:50
hizel
в далекие CS времена помнится мы баловались убивая на соседних кантуперах CS через удаленную консоль
сейчас такого нет?
а сервер можно запустить через daemon

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 13:32:18
RayTraceR
hizel писал(а):в далекие CS времена помнится мы баловались убивая на соседних кантуперах CS через удаленную консоль
сейчас такого нет?
а сервер можно запустить через daemon
Хмм допусти есть процесса pid как я могу отослать команду даемону?

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 14:25:51
hizel
насколько я понимаю там отдавались команды через игровой сокет
--
а остоновку сделать через kill

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 18:00:09
RayTraceR
hizel писал(а):насколько я понимаю там отдавались команды через игровой сокет
--
а остоновку сделать через kill
Ели можно - поподробнее. А остановка не интересует.

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 18:04:51
hizel
в CS есть консоль в игре? вот та же консоль удаленная

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 18:34:53
RayTraceR
Нет протокол Rcon исключен. Нужно только через стандартную консоль.

Re: screen - проблема посылки команд.

Добавлено: 2010-08-24 23:21:45
hedgehog
RayTraceR писал(а):Нет протокол Rcon исключен. Нужно только через стандартную консоль.
а почему исключен, если не секрет?
тот же amxbans с вебморды через сокеты, кажется, отправляет status и прочую ерунду в консоль. удаленно.

Re: screen - проблема посылки команд.

Добавлено: 2010-08-25 9:41:54
RayTraceR
hedgehog писал(а):а почему исключен, если не секрет?
тот же amxbans с вебморды через сокеты, кажется, отправляет status и прочую ерунду в консоль. удаленно.
Нужна работа напрямую. amxbans также работает через ркон.

Re: screen - проблема посылки команд.

Добавлено: 2010-08-25 13:55:23
RayTraceR
Все - неактуально - тему можно закрыть