Как запускать сервера CS1.6 в виде сервисов linux |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
Как запускать сервера CS1.6 в виде сервисов linux |
s88s |
28.12.2016, 1:29
Сообщение
|
Я решил поднять тему по вопросу запуска сервера CS 1.6 и так сказать не много внести изменения в конструкцию ... не знаю сделал я правильно или нет решать Вам
За основу я взял скрипт вот ОТСЮДА что бы туда сюда не бегать выложу оригинал скрипта. Все пояснения по этому скрипту Вы найдете перейдя по ссылке выше Код #!/bin/bash # Copyright (c) 2007 Omega Sector. All rights reserved. # # Author: Stanislav Batnikov <Sobig@omega-sector.kz> # # /etc/init.d/omega-online-nosteam-pub-1 # # ### BEGIN INIT INFO # Provides: omega-online-nosteam-pub-1 # Description: Counter-Strike 1.6 NoSteam linux dedicated server starting service ### END INIT INFO RETVAL=0 path="/srv/games/nosteam/pub" start() { if [ -d $path ]; then cd $path ./hlds_run_pub1 +sv_lan 1 -debug -insecure -game cstrike -nomaster +maxplayers 24 +port 27001 +ip 10.10.27.10 +exec pub1.cfg +map de_dust2 -pingbooster 1 -pidfile pub1.pid& touch ./pub1.run fi } stop() { if [ -f $path/pub1.run ]; then killall hlds_run_pub1 killall hlds_i686_pub1 cd $path rm -R pub1.pid rm -R ./pub1.run fi } status() { cd $path; [ -f $path/pub1.pid ] } . /etc/rc.status rc_reset case "$1" in start) start rc_status -v ;; stop) stop rc_status -v ;; status) status rc_status -v ;; restart) stop start rc_status -v ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac rc_exit exit $RETVAL и из оригинального скрипта я удалил строчки: . /etc/rc.status rc_reset rc_status -v rc_exit Эти строчки я удалил так как во первых в консоле мне выдавало ошибку о том что нет этих файлов и во вторых я так понимаю что они отвечают за статистику работы сервера ... что мне тоже не надо я зайду в панель управления и там все увижу работает сервак или же нет. А да чуть не забыл заменил еще пару строк первая строка запуска Код ./hlds_run_pub1 +sv_lan 1 -debug -insecure -game cstrike -nomaster +maxplayers 24 +port 27001 +ip 10.10.27.10 +exec pub1.cfg +map de_dust2 -pingbooster 1 -pidfile pub1.pid& привел ее к такому виду Код ./hlds_run -game cstrike +ip 0.0.0.0 +port 27015 +sv_lan 0 +maxplayers 10 +map de_dust2 -pingbooster 1 -pidfile pub1.pid > /dev/null 2>&1 & Надеюсь что в строке запуска не чего лишнего не указал и вторая строка которую я заменил Код killall hlds_i686_pub1 я ее привел к такому виду Код killall hlds_linux так как файла hlds_i686 у меня нет за место него hlds_linux. Сразу оговорюсь у меня запускается пока что один сервак под него я и делал этот скрипт и привел его к такому виду Код #!/bin/bash # Copyright (c) 2007 Omega Sector. All rights reserved. # # Author: Stanislav Batnikov <Sobig@omega-sector.kz> # # /etc/init.d/omega-online-nosteam-pub-1 # # ### BEGIN INIT INFO # Provides: omega-online-nosteam-pub-1 # Description: Counter-Strike 1.6 NoSteam linux dedicated server starting service ### END INIT INFO RETVAL=0 path="/srv/games/nosteam/pub" start() { if [ -d $path ]; then cd $path ./hlds_run -game cstrike +ip 0.0.0.0 +port 27015 +sv_lan 0 +maxplayers 10 +map de_dust2 -pingbooster 1 -pidfile pub1.pid > /dev/null 2>&1 & touch ./pub1.run fi } stop() { if [ -f $path/pub1.run ]; then killall hlds_run killall hlds_linux cd $path rm -R pub1.pid rm -R ./pub1.run fi } status() { cd $path; [ -f $path/pub1.pid ] } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVAL Файл с измененным скриптоп я положил в домашнею директорию и выполнил следующее в консоле : 1. Делаем файл исполняемым Код chmod +x ./pub1 2. Копируем в хранилище сервисных скриптов Код cp ./pub1 /etc/init.d 3. Делаем прописку в каталогах уровней запуска: Код update-rc.d pub1 defaults Цитата Полный путь давать не надо, только имя в /etc/init.d/ Что бы сделать выписку из каталога запука (удаления всех симлинков на этот скрипт из всех каталогов уровней запуска) делаем Код update-rc.d -f pub1 remove Цитата Исходный скрипт /etc/init.d/pub1 при этом не удаляется.. и командой mc я не пользовался Так вот я подумал если сервер можно запустить с помощью service команды почему бы ей не воспользоваться на с Веб панели и так же не прикрутить к использованию три кнопки с разными командами И так первый делом нам надо установить SSH2 открыть все поты если надо и тд. После того как убедились что SSH2 стоит создаем простой php скрипт с проверкой подключения к SSH Так и назовем этот файл ssh.php ( название роли не играет главное расширение что бы было .php ) с таким содержимым Код <? $connection=ssh2_connect('1.1.1.1', 22); if (ssh2_auth_password($connection, 'admin', 'password')) { echo "Аутентификация выполнена!\n"; } else { die('Ошибка аутентификации'); } ?> где 1.1.1.1 - это Ваш IP которому надо подключится 22 - это порт SSH подключения по умолчанию он 22 и его не меняем admin - это к какому пользователю Вы подключаетесь password - это пароль пользователя которому Вы подключаетесь далее если все правильно сделали то перейдя по ссылке http://Ваш_адрес/ssh.php Вы должны увидеть Код Аутентификация выполнена! И для завершения всего приводим наш код к такому виду Код <?php header('Content-Type: text/html; charset=utf-8'); $connection=ssh2_connect('1.1.1.1', 22); if (ssh2_auth_password($connection, 'admin', 'password')) { echo "Аутентификация выполнена!\n"; if(isset($_POST["submit_start"])) { $stream = ssh2_exec($connection, 'service pub1 start'); } else if(isset($_POST["submit_stop"])) { $stream = ssh2_exec($connection, 'service pub1 stop'); } else if(isset($_POST["submit_restart"])) { $stream = ssh2_exec($connection, 'service pub1 restart'); } } else { die('Ошибка аутентификации'); } ?> <form action="" method="POST"> <input type="submit" name="submit_start" value="Старт сервера"> <input type="submit" name="submit_stop" value="Стоп сервера"> <input type="submit" name="submit_restart" value="Рестарт сервера"> </form> И о чудо все работает ... включается выключается и делает даже рестарт =) Надеюсь может кому пригодится. |
|
Поблагодарили 1 раз
|
|
MpAimPro |
28.12.2016, 14:14
Сообщение
|
Норм, но можно было сделать немножко подругому, тк это у нас является управлением, следовательно туда не должен заходить любой желающий
Вроде всё норм сделал, проверяйте кто юзает его. PS Если будут ошибки в коде, пишите пдправлю, тк сегодня вообще голова не варит :D CODE <?php
session_start(); header('Content-Type: text/html; charset=utf-8'); /* Изменяемые параметры - Заполните поля =========================================*/ $pass = '123'; // Пароль для авторизацие в панели управление сервером $ip_ssh2 = ''; // Ип вашего вдс/дедик к которому подключаемся $port_ssh2 = '22'; // Порт SSH стандарт 22 $log_ssh2 = ''; // Пользователь к которому подключаетесь $pass_ssh2 = ''; // Пароль пользователя /* Конец параметров =========================================*/ if($_POST['auth']){ authorization($pass); } function authorization($pass){ $f_pass = trim($_POST['auth_pass']); if($pass == $f_pass){ $_SESSION['auth'] = 'admin_auth'; }else{ echo "Неправильный пароль"; } } if(!$_SESSION['auth']){ ?> <form method="post" action="#"> <input maxlength="32" name="pass" placeholder="Введите пароль" type="text"> <input type="submit" name="auth" value="Войти" /> </form> <?php }else{ $connection=ssh2_connect($ip_ssh2, $port_ssh2); if (ssh2_auth_password($connection, $log_ssh2, $pass_ssh2)) { echo "Аутентификация выполнена!\n"; if(isset($_POST["submit_start"])) { $stream = ssh2_exec($connection, 'service pub1 start'); } else if(isset($_POST["submit_stop"])) { $stream = ssh2_exec($connection, 'service pub1 stop'); } else if(isset($_POST["submit_restart"])) { $stream = ssh2_exec($connection, 'service pub1 restart'); } } else { die('Ошибка аутентификации'); } ?> <form action="" method="POST"> <input type="submit" name="submit_start" value="Старт сервера"> <input type="submit" name="submit_stop" value="Стоп сервера"> <input type="submit" name="submit_restart" value="Рестарт сервера"> </form> <?php } ?>
Отредактировал: MpAimPro, - 28.12.2016, 14:23
|
|
Поблагодарили 1 раз
|
|
s88s |
28.12.2016, 15:36
Сообщение
|
MpAimPro, Авторизацию я не делал так как это чудо я буду внедрять в панель CS:BANS а там и так уже есть авторизация и если все правильно поставить то тогда лишнего не надо не чего писать ... я имею ввиду авторизации .
В панели есть настройки где можно другим админам давать привилегии де он может шариться а где нет ... так вот в настройки сервера внедрить лучше всего туда точно не кто не попадет кроме меня так как там rcon а rcon это священное место и стратегически секретный объект куда пустишь не всякого ... вот тебе и авторизация вот тебе и защита) |
|
|
|
MpAimPro |
28.12.2016, 18:04
Сообщение
|
|
|
s88s |
28.12.2016, 18:10
Сообщение
|
|
|