Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как запустить выполнение программы.exe на сервере? [2]
Форумы портала PHP.SU » PHP » Программирование на PHP » Как запустить выполнение программы.exe на сервере?

Страниц (4): « 1 [2] 3 4 »
 

16. MoNSTRiK - 27 Января, 2010 - 04:29:06 - перейти к сообщению
JustUserR пишет:
получаете вывод с помощью считывания с popen - после этого получаете номер нужного процесса - и делаете запуск posix_kill(полученный_номер_процесса,9)


на днях попробую. о функциях tasklist /? и taskkill /? ... даже не знаю есть ли они. скорей всего их нету. Улыбка
17. viktor6 - 28 Января, 2010 - 17:30:11 - перейти к сообщению
А под linux можно такое сделать?
18. JustUserR - 28 Января, 2010 - 17:34:37 - перейти к сообщению
viktor6 пишет:
А под linux можно такое сделать?
А под linux это делается еще проще - по сути дела все то же самое но start мы заменяем на перенаправление в /dev/null и добавляем запуск в фоновом режиме с помощью & - а для завершения daemon-а есть либо команды killall либо ps и kill по выборке с grep
Напишите более подробно задачу и постараемся вам помочь
19. viktor6 - 28 Января, 2010 - 18:03:35 - перейти к сообщению
Держу сервера кс под linux хочу дать пользователю доступ к управлению сервера кс но по ssh как то не хочется давать. Вот и подумал а незя чтоб он через сайт мог управлять запуск остановка сервера. А тут еще случайно попал на этот форум Улыбка
пользуюсь таким скриптом управления сервера
PHP:
скопировать код в буфер обмена
  1. #!/bin/bash
  2. # for ALFA-STRIKE project
  3. # Credit: [A]SECTOR {www.alfa-strike}
  4. # email: sectorrusso@gmail.com
  5. # /etc/init.d/hlds_classic
  6. #
  7. #
  8. ### BEGIN INIT INFO
  9. # Provides: hlds_classic
  10. # Description: Counter-Strike 1.6 NoSteam linux dedicated server starting service
  11. ### END INIT INFO
  12. RETVAL=0
  13.  
  14. #Путь к серверу
  15. path="/home/viktor/KS_servera/GunGame"
  16.  
  17. start() {
  18. if [ -d $path ]; then
  19. cd $path
  20. #Строка запуска каждого сервера
  21. screen -A -m -d -S cs ./hlds_run_gungames -binary ./hlds_i686_gungames -game cstrike +port 27017 +map de_dust2 +maxplayers 22 -insecure +ip 10.100.146.15 -pingboost 2 -nomaster -pidfile hlds_gungames.pid
  22. #где xx.xxx.xx.xx ваш айпи адрес и меняем на свой порт.
  23. touch ./hlds_gungames
  24. fi
  25. }
  26.  
  27. stop() {
  28. #if [ -f $path/hlds_gungames.run ]; then
  29. killall hlds_run_gungames
  30. killall hlds_i686_gungames
  31. #kill 'cat hlds_classic.pid'
  32. cd $path
  33. rm -R hlds_gungames.pid
  34. #rm -R cron.log
  35. #запись информации в лог файл cron.log можно отключить в самом crontab, соответственно эту строку в скрипте закоментируем.  
  36. #rm -R ./hlds_gungames
  37. #fi
  38. }
  39.  
  40. #Статус >>> старт,рестарт,остановка сервера
  41. status() {
  42. cd $path;
  43. [ -f $path/hlds_gungames.pid ]
  44. }
  45. case "$1" in
  46. start)
  47. start
  48. echo "CS Server_classic starting"
  49. ;;
  50. stop)
  51. stop
  52. echo "CS Server_classic stoping"
  53. ;;
  54. restart)
  55. $0 stop
  56. $0 start
  57. echo "Restarting Gameserver: Counter-Strike 1.6"
  58. ;;
  59. *)
  60. echo $"Usage: $0 {start|stop|restart}"
  61. esac
20. JustUserR - 29 Января, 2010 - 00:35:27 - перейти к сообщению
viktor6 В общем виде можно попробовать оставить приведенный вами SH-скрипт но переделать его под PHP-скрипт с соответствующими системными вызовами
Вот что у меня примерно получилось
PHP:
скопировать код в буфер обмена
  1. $game_path="/home/viktor/KS_servera/GunGame"
  2. $serv_opt=$_GET['serv_opt'];
  3. if($serv_opt=="start")
  4. {$launch_str="cd /$game_path && screen -A -m -d -S cs ./hlds_run_gungames -binary ./hlds_i686_gungames -game cstrike +port 27017 +map de_dust2 +maxplayers 22 -insecure +ip 10.100.146.15 -pingboost 2 -nomaster -pidfile hlds_gungames.pid";
  5. popen($launch_str,"r");
  6. }
  7. elseif($serv_opt=="stop")
  8. {system("killall hlds_run_gungames && killall hlds_i686_gungames");
  9. chdir($game_path);
  10. unlink("hlds_gungames.pid");
  11. }
  12. elseif($serv_opt=="check")
  13. {chdir($game_path);
  14. if(file_exists("hlds_gungames.pid")) {echo "Игра запущена";}
  15. else {echo "Игра не запущена";}
  16. }
Конечно данный PHP-скрипт можно доделать в том числе добавить безопасный вод и некую дополнительную проверку работоспособности сервера игры (Нарример по открытому порту или поиску в списке процессов) но я думаю пока суть понятна Улыбка
21. MoNSTRiK - 29 Января, 2010 - 01:27:10 - перейти к сообщению
viktor6 пишет:
Держу сервера кс под linux хочу дать пользователю доступ к управлению сервера кс но по ssh как то не хочется давать. Вот и подумал а незя чтоб он через сайт мог управлять запуск остановка сервера.


Всё можно, я именно сей час дорабатываю вторую версию панели управления.
Только мы держим в промышленных масштабах сервера и юзерам удобно через сайт всё делать.

Ставишь апач на сервере, настраиваешь php и в путь.
Но это при условии что не хочется через фтп делать, так как там есть нюансы.
22. JustUserR - 29 Января, 2010 - 01:33:25 - перейти к сообщению
MoNSTRiK пишет:
Всё можно, я именно сей час дорабатываю вторую версию панели управления
Учитывая что linux это все-таки серверная ОС и основоположник daemon-ов то на ней не тольк можно но и гораздо проще заниматься такими делами - о чем говорит хотя бы наличие команд типа ps killall и оператора & а также довольно мощного встроенного языка sh/bash
А что касается решения в виде PHP-скрипта (Как автору и требуется) я привел пример кода на основе bash-скрипта
MoNSTRiK пишет:
Но это при условии что не хочется через фтп делать, так как там есть нюансы
А вот это очень интересно как можно сделать через FTP? Я знаю что вроде бы можно поставить права на запуск и запускать удаленно но так почти никогда не делал Улыбка
23. MoNSTRiK - 29 Января, 2010 - 12:34:44 - перейти к сообщению
Цитата:
о чем говорит хотя бы наличие команд типа ps killall

А эта команда даже есть в виндовс 7.
ДА и мы юзаем на сервере win server 2008

JustUserR пишет:
А вот это очень интересно как можно сделать через FTP? Я знаю что вроде бы можно поставить права на запуск и запускать удаленно но так почти никогда не делал


Ой. я не про то управление подумал Улыбка))
просто если человек с выше хочет сделать доступными настройки кс сервера, то изменять файлы (настройки) сервера, можно через фтп, удалённо.

Это походу оффтом был Улыбка) извиняюсь, спросони не сообразил сразу.

---------

А как можно давать серверу команды через rcon ? прям в консоль сервера.
24. JustUserR - 29 Января, 2010 - 13:40:19 - перейти к сообщению
MoNSTRiK пишет:
А эта команда даже есть в виндовс 7. ДА и мы юзаем на сервере win server 2008
Тогда тем более ваши задачи упращаются - ведь для управления daemon-ами это самое оно Мне же приходилось писать много таких сервисов упарвления но все эти функции делались вручную Улыбка
25. viktor6 - 29 Января, 2010 - 17:43:43 - перейти к сообщению
Я даже не против дать доступ через фтп но какой для этого потребуется скрипт даже не соображу Недовольство, огорчение
26. MoNSTRiK - 29 Января, 2010 - 20:15:49 - перейти к сообщению
viktor6 пишет:
Я даже не против дать доступ через фтп но какой для этого потребуется скрипт даже не соображу


оч просто. Ставим фтп сервер на машину где сервера.
И далее читаем этот раздел сайта http://php.su/articles/?cat=protocols

Там все приёмы, для того, чтобы создать веб управление через протокол фтп
27. viktor6 - 29 Января, 2010 - 20:32:29 - перейти к сообщению
MoNSTRiK пишет:
оч просто. Ставим фтп сервер на машину где сервера.
И далее читаем этот раздел сайта http://php.su/articles/?cat=protocols

Там все приёмы, для того, чтобы создать веб управление через протокол фтп

Фтп стоит ProFTP
(Добавление)
JustUserR
Parse error: syntax error, unexpected T_VARIABLE in /home/www/test/index.php on line 3
28. JustUserR - 30 Января, 2010 - 00:56:11 - перейти к сообщению
viktor6 пишет:
JustUserR Parse error: syntax error, unexpected T_VARIABLE in /home/www/test/index.php on line 3
Я же привел основу PHP-скрипта а не полносью готовое решение - там уже действительно не хватает точки с запятой после первой строчки - а может синтаксически и что еще - но логика верная Улыбка
MoNSTRiK пишет:
Очень просто Ставим фтп сервер на машину где сервера
И далее читаем этот раздел сайта http://php.su/articles/?cat=protocols
ИМХО это уже перебор - с помощью PHP на сервере (При наличии соответствущих прав) мы может вызывать произвольные системные команды и менять содержимое файлов - а вы предлагаете создавать FTP-сервер и еще с ним обмениваться командами Улыбка
29. MoNSTRiK - 30 Января, 2010 - 01:15:13 - перейти к сообщению
JustUserR пишет:
ИМХО это уже перебор - с помощью PHP на сервере (При наличии соответствущих прав) мы может вызывать произвольные системные команды и менять содержимое файлов - а вы предлагаете создавать FTP-сервер и еще с ним обмениваться командами


Это в том случае, когда управление производится с удалённого сервера, а так конечно Улыбка
30. JustUserR - 30 Января, 2010 - 01:57:57 - перейти к сообщению
MoNSTRiK пишет:
Это в том случае, когда управление производится с удалённого сервера, а так конечно Улыбка
Может быть вы правы но лично я бы в случае работы с удаленным сервером написал бы простенький TCP-сервер и TCP-клиент для обмена соответствующей информацией о запуске и остановке daemon-а - по мне это будет очевиднее да и о правах доступа и запуска надо меньше задумываться Улыбка

 

Powered by ExBB FM 1.0 RC1