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

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

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

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

дайте php скрипт включения сервера

cs-portal
сообщение 9.4.2011, 15:50
Сообщение #1
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

Уже сколько часов читаю мануалы по php_exec так и недогнал как правильно реализовать всключение
и выключение сервера через php
меня интересует скорее всего только включение сервера
например через .bat / .cmd файл
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя x@kep
сообщение 10.4.2011, 1:50
Сообщение #2


Стаж: 15 лет

Сообщений: 80
Благодарностей: 43
Полезность: 414

Раньше, пока сервера были на винде, разбирался с этим, и даже что-то работало. Сейчас по ssh это делается в одно касание, так что даже не пробовал писать скрипт. Вот два варианта. Сервер запущен в виде службы через программу fire daemon.

Первый способ - создаём батник с нужным содержимым, выполняем его, а затем удаляем. Не самый быстрый способ, но я тоже не сразу разобрался с exec. Скрипт написан с тем учетом, что веб сервер и игровой сервер находятся на разных машинах с разными айпишниками. Если они находятся в одном месте, и если батник уже готов и его не надо генерировать, то скрипт можно написать в 3 строчки.

$str - это ip + port нашего сервера. порт в данной процедуре не нужен, так что он отбрасывается.
$comm - это команда для службы (stop/start).
$service - это название сервиса, который у нас связан с игровым сервером.
$login и $password - это логин и пароль удалённой машины с игровым сервером, от чьего имени будут выполняться команды в батнике.

Код
$lists = explode(":", $str);
$server = $lists[0];
        
$direct = "_scripts\\";
    
$filename = $comm.".bat";
    
$command = "net use \\\\".$server."\\IPC$ \"".$password."\" /user:".$server."\\".$login."\r\n".
    "sc \\\\".$server." ".$comm." ".$service."\r\n".
    "net use \\\\".$server."\\IPC$ /delete /yes \r\n".
    "exit";
$handle = fopen($direct.$filename, "w");
fwrite($handle, $command);
fclose($handle);
      
$real_path = realpath($direct.$filename);
$center_section = $real_path;
    
if (exec($real_path)){
    $center_section = "
        <fieldset>
            <legend>
                <font color=green>
                    <b>Сообщение</b>
                </font>
            </legend>Операция $comm для сервера $str успешно выполнена!
        </fieldset>
    ";

} else {
    $center_section = "
        <fieldset>
            <legend>
                <font color=red>
                    <b>Ошибка</b>
                </font>
            </legend>Операция $comm для сервера $str не выполнена!
        </fieldset>
    ";
}
    
unlink ($direct.$filename);
echo $center_section;


Т.е. в папке _scripts создаётся бат файл, который содержит команду для удалённой машины, который выполняется, а затем удаляется.

Второй способ - послать команду серверу напрямую.
Код
$command2 = "net use \\\\".$server."\\IPC$ \"".$password."\" /user:".$server."\\".$login;
$command3 =    "sc \\\\".$server." ".$comm." ".$service;
    
$issuccess2 = exec($command2,$res2);
$issuccess3 = exec($command3,$res3);
if ($issuccess3){
    $center_section = "
        <fieldset>
            <legend>
                <font color=green>
                    <b>Сообщение</b>
                </font>
            </legend>Операция $comm для сервера $str успешно выполнена!
        </fieldset>
    ";
} else {
    $center_section = "
        <fieldset>
            <legend>
                <font color=red>
                    <b>Ошибка</b>
                </font>
            </legend>Операция $comm для сервера $str не выполнена!
        </fieldset>
    ";
}

echo $center_section;

На счёт второго способа не уверен, в рабочей ли конфигурации он сейчас, но первый с батником точно работает. Не знаю, поможет ли вам это, но думаю как минимум может дать направление =)

P.S. я новичок в этом деле, и если у кого есть более оптимальные способы решения, то отпишитесь, будет полезно узнать =)

Отредактировал: x@kep, - 10.4.2011, 2:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: