Приветствую.
Хочу попросить у вас помочь мне.
Нужен скрипт под unix что бы можно зайти на сайт нажать кнопку и установился сервер cs.
Алгоритм желаемой работ:
Захожу на сайт нажимаю на кнопку
С помощью скрипта на сервере разархивируется архив с сервером и устанавливается в папку /games/ (а если будет производиться ещё одна разархивация в ту же папку то автоматически меняется название папки примерно так:"srv1 , srv2, srv3")
Скрипт
Модераторы: /dev/random, Модераторы разделов
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Скрипт
1. Выполните все необходимые команды руками, по одной, в командной строке.
2. Запишите в файл install-cs.sh. Проверьте его работу командой sh install-cs.sh.
3. Приведите полученный скрипт здесь, задайте оставшиеся вопросы о том, что непонятно, например: "как генерировать имена каталогов автоматически", "как запускать скрипт по кнопке на веб-странице" и т.п.
4. PROFIT в виде ответов.
Я думаю, мало кто, из способных написать скрипт, в курсе насчет того, какие команды необходимы для установки сервера CS.
2. Запишите в файл install-cs.sh. Проверьте его работу командой sh install-cs.sh.
3. Приведите полученный скрипт здесь, задайте оставшиеся вопросы о том, что непонятно, например: "как генерировать имена каталогов автоматически", "как запускать скрипт по кнопке на веб-странице" и т.п.
4. PROFIT в виде ответов.
Я думаю, мало кто, из способных написать скрипт, в курсе насчет того, какие команды необходимы для установки сервера CS.
Мои розовые очки
Спасибо сказали:
-
- Сообщения: 4
Re: Скрипт
нет знаний с unix
прощу помощи у гуру unix'a
есть такой скриптик , он скачивает сборку и устанавливает на сервер:
что нужно добавить в него для того что бы он геренировал имя для папки куда разархивировать архив?
прощу помощи у гуру unix'a
есть такой скриптик , он скачивает сборку и устанавливает на сервер:
Spoiler
Код: Выделить всё
#!/bin/bash
#----------------------------------------------------------------------------------------#
#- Автор скрипта Алексей (A.A.V.) . E-mail: aav@li.ru Jid: a.a.v.@xmpp.ru -#
#- Nano Style Group официальная конференция nano@conference.jabber.ru -#
#- Страничка с информацией об этом скрипте http://gudcs.tk/aav -#
#- Сервер группы http://nnstyle.dyndns.org -#
#- Сервер игры CS 1.6 nnstyle.dyndns.org:27777 -#
#- Скрипт: Версия 2
#----------------------------------------------------------------------------------------#
echo -e '\E[1m' " Здравствуйте. Данный скрипт был написал для быстрой и удобной установки сервера игры Counter-Strike 1.6 для Linux систем"
echo " По завершению работы скрипта у вас будет установлен настроеный и готовый к эксплуатации сервер с поддержкой 47 и 48 протоколов, после чего вы сможете его запустить"
echo " На момент написания скрипта все устанавливаемые компаненты были последними стабильными версиями. Информация о версиях описана ниже"
echo " Сервер подготовлен на I386 архитектуру"
echo " 1. Dproto i386 v0.9.87"
echo " 2. Metamod i386 i586 v1.19p32"
echo " 3. Amxmodx i386 v1.8.1"
echo " 4. Mmtimer 1.6 " ; tput sgr0
echo " "
echo -e '\E[31m' "\033[1m Вы действительно хотите продолжить установку ?\033[0m" ; tput sgr0
select a in продолжить выйти ;
do
case $a in
продолжить) break;;
выйти ) echo -e '\E[31m' "\033[1m Вы отменили процесс установки !\033[0m" ; tput sgr0 :
exit 0;;
*) echo -e '\E[31m' "\033[1m Неверный ввод, повторите !\033[0m" ; tput sgr0;
esac
done
echo -e '\E[33m' "\033[1m Вы выбрали продолжение процесса установки !\033[0m" ; tput sgr0
echo -e '\E[31m' " \033[4mПожалуйста, не закрывайте окно терминала и дождитесь сообщения об окончании процесса установки !\033[0m" ; tput sgr0
#-------
DIRECTORY="/cs"
STARTINSTALL="Приступаю к установке "
FINISHINSATLL="Завершена установка"
FINISH="Процесс установки и настройки завершён !"
#-------
mkdir ~$DIRECTORY
cd ~$DIRECTORY
wget http://storefront.steampowered.com/download/hldsupdatetool.bin
file="./hldsupdatetool.bin"
if [ -e $file ]; then
echo -e '\E[33m' "\033[1m Файл hldsupdatetool.bin был успешно загружен !\033[0m" ; tput sgr0
else
echo -e '\E[31m' " \033[4mФайл не был загружен. Проверьте своё подключение к сети интернет !\033[0m" ; tput sgr0 ;
exit
fi
chmod a+x hldsupdatetool.bin
echo -e '\E[33m' "\033[1m Файл hldsupdatetool.bin подготовлен к запуску !\033[0m" ; tput sgr0
./hldsupdatetool.bin
echo -e '\E[33m' "\033[1m Подключение к ресурсу !\033[0m" ; tput sgr0
./steam
./steam
echo -e '\E[33m' "\033[1m Начинается загрузка последней версии сервера Counter-Strike 1.6 для Linux !\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m Время загрузки зависит от скорости подключения вашего интернет узла !\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m Загружаемый объём на момент написания составлял всего 659,7 МБ с количеством объектов 5 108 ! \033[0m" ; tput sgr0
./steam -command update -game cstrike -dir ~/cs/hlds
chmod a+x ./hlds/hlds_*
echo -e '\E[33m' "\033[1m $STARTINSTALL Metamod'а !\033[0m" ; tput sgr0
mkdir -p ./hlds/cstrike/addons/metamod/dlls
rm hldsupdatetool.bin
rm readme.txt
wget http://prdownloads.sourceforge.net/metamod-p/metamod-p-1.19p32-linux_i586.tar.gz
tar -zxvf metamod-p-1.19p32-linux_i586.tar.gz
mv metamod_i386.so ./hlds/cstrike/addons/metamod/dlls
rm metamod-p-1.19p32-linux_i586.tar.gz
cat ./hlds/cstrike/liblist.gam | sed "s/dlls\/cs_i386.so/addons\/metamod\/dlls\/metamod_i386.so/" > ./hlds/cstrike/liblist.gam.new
mv ./hlds/cstrike/liblist.gam.new ./hlds/cstrike/liblist.gam
echo -e '\E[33m' "\033[1m $FINISHINSATLL Metamod'а !\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m $STARTINSTALL Dproto !\033[0m" ; tput sgr0
mkdir ./hlds/cstrike/addons/dproto
# wget http://download.freakz.ro/dproto_0_9_87.rar
# unrar x dproto_0_9_87.rar
wget http://gudcs.tk/aav/files/dproto_0_9_87.tar
tar -zxvf dproto_0_9_87.tar
mv ./bin/Linux/dproto_i386.so ./hlds/cstrike/addons/dproto
mv dproto.cfg ./hlds/cstrike
touch ./hlds/cstrike/addons/metamod/plugins.ini
echo "linux addons/dproto/dproto_i386.so" > ./hlds/cstrike/addons/metamod/plugins.ini
rm dproto_0_9_87.rar
rm Readme.txt
rm -R ./amxx
rm -R ./bin
echo -e '\E[33m' "\033[1m $FINISHINSATLL Dproto !\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m $STARTINSTALL AMX Mod X !\033[0m" ; tput sgr0
wget http://sunet.dl.sourceforge.net/project/amxmodx/AMX%20Mod%20X%20Base/1.8.1/amxmodx-1.8.1-base.tar.gz
tar -xzvf ./amxmodx-1.8.1-base.tar.gz -C ./hlds/cstrike/
rm amxmodx-1.8.1-base.tar.gz
wget http://sunet.dl.sourceforge.net/project/amxmodx/Counter-Strike%20Addon/1.8.1/amxmodx-1.8.1-cstrike.tar.gz
tar -xzvf ./amxmodx-1.8.1-cstrike.tar.gz -C ./hlds/cstrike/
rm amxmodx-1.8.1-cstrike.tar.gz
echo "linux addons/amxmodx/dlls/amxmodx_mm_i386.so" >> ./hlds/cstrike/addons/metamod/plugins.ini
echo -e '\E[33m' "\033[1m $FINISHINSATLL AMX Mod X !\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m $STARTINSTALL Mmtimer'a !\033[0m" ; tput sgr0
wget http://gudcs.tk/aav/files/mmtimer_1_6.tar
tar -zxvf mmtimer_1_6.tar
mv ./mmtimer_1.6/cstrike/addons/mmtimer/mmtimer_i386.so ./hlds/cstrike/addons/mmtimer
echo "linux addons/mmtimer/mmtimer_i386.so" >> ./hlds/cstrike/addons/metamod/plugins.ini
echo "sys_ticrate 1200" >> ./hlds/cstrike/server.cfg
echo "mm_insane 0" >> ./hlds/cstrike/server.cfg
rm -R mmtimer_1.6
rm mmtimer_1_6.tar
echo -e '\E[33m' "\033[1m $FINISHINSATLL Mmtimer'a !\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m Проверка файлов language.cfg , listip.cfg , banned.cfg !\033[0m" ; tput sgr0
language="./hlds/cstrike/language.cfg"
if [ -e $language ]; then
echo -e '\E[33m' "\033[1m Файл ./hlds/cstrike/language.cfg на месте \033[0m" ; tput sgr0
else
echo -e '\E[31m' "\033[1m Файл ./hlds/cstrike/language.cfg не существует \033[0m" ; tput sgr0 ;
echo > ./hlds/cstrike/language.cfg ;
echo -e '\E[33m' "\033[1m Создал ./hlds/cstrike/language.cfg \033[0m" ; tput sgr0
fi
listip="./hlds/cstrike/listip.cfg"
if [ -e $listip ]; then
echo -e '\E[33m' "\033[1m Файл ./hlds/cstrike/listip.cfg на месте \033[0m" ; tput sgr0
else
echo -e '\E[31m' "\033[1m Файл ./hlds/cstrike/listip.cfg не существует \033[0m" ; tput sgr0 ;
echo > ./hlds/cstrike/listip.cfg ;
echo -e '\E[33m' "\033[1m Создал ./hlds/cstrike/listip.cfg \033[0m" ; tput sgr0
fi
banned="./hlds/cstrike/banned.cfg"
if [ -e $banned ]; then
echo -e '\E[33m' "\033[1m Файл ./hlds/cstrike/banned.cfg на месте \033[0m" ; tput sgr0
else
echo -e '\E[31m' "\033[1m Файл ./hlds/cstrike/banned.cfg не существует \033[0m" ; tput sgr0 ;
echo > ./hlds/cstrike/banned.cfg ;
echo -e '\E[33m' "\033[1m Создал ./hlds/cstrike/banned.cfg \033[0m" ; tput sgr0
fi
echo -e '\E[33m' "\033[1m Проверка файлов успешно завершена !\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m $FINISH !\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m Сервер можно запустить ниже указанной командой !\033[0m" ; tput sgr0
echo -e '\E[31m' "\033[1m ./hlds_run -binary ./hlds_i686 -game cstrike -nomaster +sv_lan 0 +ip 0.0.0.0 +maxplayers 22 +port 27015 +map de_dust \033[0m" ; tput sgr0
echo -e '\E[33m' "-------------------------------------------------------" ; tput sgr0
echo -e '\E[33m' "\033[1m Вы можете создать удобное управление сервером .\033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m Пример управления: \033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m ./control start \033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m ./control restart \033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m ./control stop \033[0m" ; tput sgr0
echo " "
echo -e '\E[31m' "\033[1m Выполнить действие для создания управления ?\033[0m" ; tput sgr0
select a in Да Нет ;
do
case $a in
Да) break ;;
Нет ) echo -e '\E[31m' "\033[1m Вы отменили процесс !\033[0m" ; tput sgr0 :;
exit 0;;
*) echo -e '\E[31m' "\033[1m Неверный ввод, повторите !\033[0m" ; tput sgr0 ;;
esac
done
echo " "
echo -e '\E[33m' "\033[1m Вы выбрали продолжение процесса устаноки. Сейчас вам будет создан файл управления сервером !\033[0m" ; tput sgr0
echo " "
echo " "
echo > ./control
echo -e '\E[33m' "\033[1m Создал ./control \033[0m" ; tput sgr0
echo -e '\E[33m' "\033[1m Начинаю запись данных в ./control \033[0m" ; tput sgr0
# Информация для записи в ./control
# Начало записи
echo "#!/bin/bash
############################################################################
# #
# Script written by morfin for Bazalt43|CS 1.6|Public. #
# Version 0.7 #
# CONTACTS: #
# Mail: mk75@sky.ru #
# ICQ: 382904793 #
# This script restarting counter-strike server runned with -pidfile option #
# and -norestart option and restores pidfile if it was deleted when server #
# is running. It can be runned in background and when catched kill signal #
# 2 or 3 finishes hlds and exit normally. #
# P.S Don't try to kill server before it written pidfile. #
# #
############################################################################
" > ./control
echo '
#variable to set server pidfile name
PIDFILE="hlds.pid"
#restarter pidfile name default restarter.pid
RESTARTER_PIDFILE="restarter.pid"
#path to server
SERVER_PATH="./hlds/"
PORT="27777"
MAXP="20"
MAP="de_dust2"
LAN="0"
GAME="cstrike"
#If script not included as library then execute that code
if [ "$INCLUDED" = "" ];then
VERSION="0.6"
if [ "$1" = "-v" ] || [ "$1" = "--version" ] ; then
echo $VERSION
exit
fi
if [ "$CALLED" = "" ]; then
#remember your current position
CURRENT_DIR=`pwd -L`
#scripts path
#SCRIPT_PATH=`dirname $0`
fi
cd $SERVER_PATH
#variable to set server check time
CHECK_TIME=60
' >> ./control
echo '
#variable storing runscript
RUN_SCRIPT="screen -A -m -d -S $GAME ./hlds_run -game cstrike +map $MAP -binary ./hlds_i686 +maxplayers $MAXP -noipx -nomaster -tickrate 66 +sv_lan $LAN -norestart -pingboost 2 -pidfile ./${PIDFILE} -port $PORT"
#File for logging errors and other default : restarter.log
LOG_FILE="restarter.log"
#script running first time
FIRST_RUN=1
#defining all very often calling commands
fi
start_server()
{
while (true)
do
if [ -e ${PIDFILE} ] ; then
if [ $(ps -p $(cat ${PIDFILE})|wc -l) = "1" ] ; then restart_server
fi
else restart_server
fi
sleep ${CHECK_TIME}
done
}
finish_server()
{
if [ "${TTY}" = "" ] ; then
TTY=`cat restarter.tmp`
rm restarter.tmp
fi
if [ -e ${PIDFILE} ]; then
PID=`cat ${PIDFILE}`
fi
echo "Пожалуйста, дождитесь полного завершения работы сервера">${TTY}
if [ $(ps -p $(cat ${PIDFILE})|wc -l) = "1" ] ; then
echo "Сервер завершил работу !">${TTY}
rm ${PIDFILE}
rm ${RESTARTER_PIDFILE}
exit
else
kill -3 ${PID}
sleep 10
finish_server
fi
}
restart_server()
{
if [ "${FIRST_RUN}" = 1 ] ; then
FIRST_RUN=0
$(${RUN_SCRIPT}) >>/dev/null
echo "Пожалуйста, дождитесь полного запуска сервера">>${TTY}
sleep 30
if [ -e ${PIDFILE} ] ; then echo "Сервер был успешно запущен !">${TTY} ; fi
else
MESSAGE="Server was restarted after crash"
echo $(date "+%x %X") $MESSAGE >> ${LOG_FILE}
$(${RUN_SCRIPT}) >>/dev/null
fi' >> ./control ; echo "
trap 'INCLUDED=\"1\"; . \$0 ; finish_server ' 2 3
}
" >> ./control
echo '
start_restarter()
{
export CALLED="1"
export TTY=`tty`
export SERVER_PATH=${SERVER_PATH}
screen -A -m -d sh ${CURRENT_DIR}/`basename $0`>>mylog.txt
}
stop_restarter()
{
echo `tty`>restarter.tmp
kill -3 `cat ${RESTARTER_PIDFILE}`
echo "Успешно завершилась работаета сервера"
}
start()
{
if [ -e ${RESTARTER_PIDFILE} ] ; then
if [ `ps -p $(cat ${RESTARTER_PIDFILE})|wc -l` = "1" ]; then start_restarter
else
echo "Сервер уже запущен ! (pid=`cat ${RESTARTER_PIDFILE}`)"
fi
else start_restarter
fi
}
restart()
{
if [ -e ${RESTARTER_PIDFILE} ] && [ `ps -p $(cat ${RESTARTER_PIDFILE})|wc -l` = "2" ]; then
stop_restarter
start_restarter' >> ./control
echo " else echo \"Не может перезапустить: сервер не запущен !\"
fi
}" >> ./control
echo '
stop()
{
if [ -e ${RESTARTER_PIDFILE} ] && [ `ps -p $(cat ${RESTARTER_PIDFILE})|wc -l` = "2" ] ; then
stop_restarter' >> ./control
echo " else echo \"Не могу остановиться: сервер не запущен !\"
fi
}
" >> ./control
echo '
status()
{
if [ -e ${PIDFILE} ] && [ $(ps -p $(cat ${PIDFILE})|wc -l) = "2" ] ; then
echo "hlds работает как pid $(cat ${PIDFILE})"
else echo "hlds не запущен"
fi
exit
}
' >> ./control
echo '
if [ "${INCLUDED}" = "" ] ; then
if [ "${CALLED}" = "1" ] ; then
echo $$ > ${RESTARTER_PIDFILE}
start_server
else
if [ "$1" = "" ] ; then start
else
PARAMETER="`echo $1|tr [:upper:] [:lower:]`"
if [ ${PARAMETER} = "start" ] ; then start
elif [ ${PARAMETER} = "stop" ] ; then stop
elif [ ${PARAMETER} = "restart" ] ; then restart
elif [ ${PARAMETER} = "status" ] ; then status
fi
fi
fi
fi
' >> ./control
echo '
#then return to previous location
if [ "$CALLED" = "" ]; then
cd ${CURRENT_DIR}
fi
' >> ./control
# Информация для записи в ./control
# Конец записи
echo -e '\E[33m' "\033[1m Запись данных в файл ./control завершена \033[0m" ; tput sgr0
chmod a+x ./control
echo " "
echo -e '\E[31m' "\033[1m Желаете запустить сервер ?\033[0m" ; tput sgr0
select a in Да Нет ;
do
case $a in
Да) break ;;
Нет ) echo -e '\E[31m' "\033[1m Вы отменили процесс запуска !\033[0m" ; tput sgr0 ;
echo -e '\E[31m' "\033[1m Старт Стоп Рестарт производится файлом ./control ?\033[0m" ; tput sgr0 ;
exit 0;;
*) echo -e '\E[31m' "\033[1m Неверный ввод, повторите !\033[0m" ; tput sgr0;
esac
done
echo -e '\E[33m' "\033[1m Старт сервера с помощью ./control файла \033[0m" ; tput sgr0
firefox http://nnstyle.dyndns.org/
firefox http://gudservcs.ucoz.ru/
./control
что нужно добавить в него для того что бы он геренировал имя для папки куда разархивировать архив?
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Скрипт
Скрипт жёстко привязан к ~/cs. Чтобы устанавливать CS в, например, ~/cs1, ~/cs2, … нужно следующее:
строку DIRECTORY="/cs" заменить на:
Код: Выделить всё
_idx=1
_prefix=$HOME/cs
while [ -d "$_prefix$_idx" ]; do
_idx=$((_idx + 1))
done
DIRECTORY="$_prefix$_idx"
строки
Код: Выделить всё
mkdir ~$DIRECTORY
cd ~$DIRECTORY
Код: Выделить всё
mkdir "$DIRECTORY"
cd "$DIRECTORY"
строку ./steam -command update -game cstrike -dir ~/cs/hlds заменить на:./steam -command update -game cstrike -dir "$DIRECTORY/hlds"
Ну, этот скриптик далеко не только архив разархивирует. Он еще его скачивает, причем не только сам сервер, но и какие-то дополнения к нему скачивает и ставит.
Мои розовые очки
-
- Сообщения: 4
Re: Скрипт
Ну, этот скриптик далеко не только архив разархивирует. Он еще его скачивает, причем не только сам сервер, но и какие-то дополнения к нему скачивает и ставит.
Да вы правы.
Он скачивает саму серверную часть + сборку для самого сервера.
А как организовать что бы можно было запустить этот скрипт с сайта, с помощью одного нажатия на кнопку?
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Скрипт
Код: Выделить всё
<html>
<body>
<?php
if($_POST['smp'] == '')
{
echo "<form action='k.php' method='post'>";
echo "<input type='submit' name='smp' value='СМП' /><br />";
echo "<input type='submit' value='мне и так хорошо' /><br />";
echo "</form>";
}
else
system("./script");
?>
</body></html>
Спасибо сказали:
-
- Сообщения: 4
Re: Скрипт
drBatty писал(а): ↑12.04.2011 16:53
Код: Выделить всё
<html> <body> <?php if($_POST['smp'] == '') { echo "<form action='k.php' method='post'>"; echo "<input type='submit' name='smp' value='СМП' /><br />"; echo "<input type='submit' value='мне и так хорошо' /><br />"; echo "</form>"; } else system("./script"); ?> </body></html>
не работает

-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Скрипт
откуда мне знать, ПОЧЕМУ у вас не работает? УМВР. может стоит почитать логфайл с ошибками? может вы mod_php не установили в апач?