Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Как запускать сервера CS1.6 в виде сервисов linux

Статус пользователя s88s
сообщение 28.12.2016, 1:29
Сообщение #1
Стаж: 7 лет 8 месяцев

Сообщений: 21
Благодарностей: 2
Полезность: 67

Я решил поднять тему по вопросу запуска сервера 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
Сообщение #2
Стаж: 7 лет 8 месяцев
Город: Минск

Сообщений: 827
Благодарностей: 205
Полезность: 253

Меценат Меценат

Норм, но можно было сделать немножко подругому, тк это у нас является управлением, следовательно туда не должен заходить любой желающий
Вроде всё норм сделал, проверяйте кто юзает его.
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
Сообщение #3
Стаж: 7 лет 8 месяцев

Сообщений: 21
Благодарностей: 2
Полезность: 67

MpAimPro, Авторизацию я не делал так как это чудо я буду внедрять в панель CS:BANS а там и так уже есть авторизация и если все правильно поставить то тогда лишнего не надо не чего писать ... я имею ввиду авторизации .

В панели есть настройки где можно другим админам давать привилегии де он может шариться а где нет ... так вот в настройки сервера внедрить лучше всего туда точно не кто не попадет кроме меня так как там rcon а rcon это священное место и стратегически секретный объект куда пустишь не всякого ... вот тебе и авторизация вот тебе и защита)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
MpAimPro
сообщение 28.12.2016, 18:04
Сообщение #4
Стаж: 7 лет 8 месяцев
Город: Минск

Сообщений: 827
Благодарностей: 205
Полезность: 253

Меценат Меценат

s88s, Ну тут то выставлена без внедрнение ксбанса, так что должна быть авторизация :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя s88s
сообщение 28.12.2016, 18:10
Сообщение #5
Стаж: 7 лет 8 месяцев

Сообщений: 21
Благодарностей: 2
Полезность: 67

Цитата(MpAimPro @ 28.12.2016, 19:04) *
s88s, Ну тут то выставлена без внедрнение ксбанса, так что должна быть авторизация :)

Вставим и внедрим .... просто времени не очень много .... а так как сделаю выложу архив ... просто панельку хочется немного доработать =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: