ventrilo123 0 Zgłoś post Napisano Marzec 12, 2011 Witam Zrobiłem sobie panel do vt i wszystko już jest gotowe oprócz włącz/wyłącz/restart serwera kompletnie nie wiem jak się za to zabrać. Proszę o pomoc Udostępnij ten post Link to postu Udostępnij na innych stronach
Miłosz 2311 Zgłoś post Napisano Marzec 13, 2011 No to zostały Ci najważniejsze rzeczy system/exec + screen Udostępnij ten post Link to postu Udostępnij na innych stronach
HaPe 242 Zgłoś post Napisano Marzec 13, 2011 Ja bym wykorzystał moduł PHP ssh2, korzystanie z exec w PHP nie jest zalecane. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Marzec 13, 2011 (edytowany) Weź sobie utwórz plik ventrilo.sh w której wpiszesz komendę uruchamiania na screenie a później tylko exec i załaduj w php ten plik Już masz komendę start. Aby zrobić stop to musisz wpisać komendę która odnajdzie tego screena (nazwa screena to najlepiej port) i go zabije. Restart to robisz stop plus start EDIT: zrób tak: PLIK START.PHP <?PHP $start = system("sh katalog/do/serwera/ventrilo/ventrilo.sh"); echo '<BR>'; echo 'Serwer Ventrilo został uruchomiony'; ?> PLIK STOP.PHP <?PHP //Port podaj taki jak podany w komendzie startującej screen $port=port; $stop2 = system("ps ax | grep $port | grep -v grep | awk '{print $1}'"); $stop = system("ps ax | grep $port | grep -v grep | awk '{print $1}' | kill " .$stop2); echo '<BR>'; echo 'Serwer Ventrilo został wyłączony'; ?> RESTART.PHP <?PHP $port=port; $rst2 = system("ps ax | grep $port | grep -v grep | awk '{print $1}'"); $rst = system("ps ax | grep $port | grep -v grep | awk '{print $1}' | kill " .$rst2); $start = system("sh katalog/serwera/ventrilo/ventrilo.sh"); echo '<BR>'; echo 'Serwer Ventrilo został zrestartowany'; ?> Edytowano Marzec 13, 2011 przez Kamikadze (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Marzec 13, 2011 Ja bym wykorzystał moduł PHP ssh2, korzystanie z exec w PHP nie jest zalecane. A czym różni się wykonanie exec bezpośrednio via PHP od exec via moduł SSH? W większości przypadków (działanie procesów php z uid użytkownika) to niczym. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Marzec 13, 2011 Oj tam się kłócicie Jeżeli on chce to do zastosowania własnego niekomercyjnego to niech wykorzysta to co mu napisałem i będzie mu ładnie działać Jak chce profesjonalnie to zrobić to już wyższa szkoła jazdy hehe Udostępnij ten post Link to postu Udostępnij na innych stronach
ventrilo123 0 Zgłoś post Napisano Marzec 13, 2011 nie mogę zrobić tego ventrilo.sh ciągle screen odpala się z nazwą "screen" a nie z "1003" ventrilo.sh #!/bin/bash screen -A -m -d -S 1003 ./ventrilo_srv sleep 2 chmod 777 "/home/serwery/ventrilo/1003/ventrilo_srv.pid" Udostępnij ten post Link to postu Udostępnij na innych stronach
Devias 8 Zgłoś post Napisano Marzec 13, 2011 (edytowany) Włacz: Ustaw sobie zmienne: $sciezka - ścieżka do katalogu np $sciezka='/home/vent/'; $r['port'] - wynik z mysql ( w moim przypadku ) $r['host'] - IP ssh $portssh - port ssh $userssh - user ssh $hashssh - haslo ssh $polecenie = "cd ".$sciezka."".$r['port']."; screen -A -m -d -S ".$r['port']." ./ventrilo_srv"; $polaczenie = ssh2_connect($r['host'], $portssh); ssh2_auth_password($polaczenie, $userssh, $hashssh); $stream = ssh2_exec($polaczenie, $polecenie); Wyłącz: $polecenie = "killall -9 ".$sciezka."".$r['port']."/ventrilo_srv"; $polaczenie = ssh2_connect($r['host'], $portssh); ssh2_auth_password($polaczenie, $userssh, $hashssh); $stream = ssh2_exec($polaczenie, $polecenie); Reset: $polecenie = "killall -9 ".$sciezka."".$r['port']."/ventrilo_srv; cd ".$sciezka."".$r['port']."; screen -A -m -d -S ".$r['port']." ./ventrilo_srv"; $polaczenie = ssh2_connect($r['host'], $portssh); ssh2_auth_password($polaczenie, $userssh, $hashssh); $stream = ssh2_exec($polaczenie, $polecenie); Kamikadze: <?PHP $port=port; $rst2 = system("ps ax | grep $port | grep -v grep | awk '{print $1}'"); $rst = system("ps ax | grep $port | grep -v grep | awk '{print $1}' | kill " .$rst2); $start = system("sh katalog/serwera/ventrilo/ventrilo.sh"); echo '<BR>'; echo 'Serwer Ventrilo został zrestartowany'; ?> Nawet jeśli się nie zresetuje serwer to i tak się wyświetli "Serwer Ventrilo został zrestartowany" nie lepiej dać: if($start) echo "Tak"; else echo "Nie"; Edytowano Marzec 13, 2011 przez Devias (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Marzec 13, 2011 Devias - zapomniałeś tylko dodać, że autor musi sobie dokompilować moduł php5_ssh2. Dla mnie jakiekolwiek takie dziwadła sensu większego nie mają. Nie lepiej opracować sobie odpalany przez crontaba pooler czytający z bazy zadania i je wykonujący? Udostępnij ten post Link to postu Udostępnij na innych stronach
Devias 8 Zgłoś post Napisano Marzec 13, 2011 Jak kto woli Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Marzec 13, 2011 [qupte] Nawet jeśli się nie zresetuje serwer to i tak się wyświetli "Serwer Ventrilo został zrestartowany" nie lepiej dać: if($start) echo "Tak"; else echo "Nie"; Fakt Ale jak ktoś potrzebuje to sobie sam to opracuje Nie lepiej opracować sobie odpalany przez crontaba pooler czytający z bazy zadania i je wykonujący? Tak tylko trzeba się na tym znać a skoro on nie potrafi zrobić start i stopu serwera to z tym będzie miał jeszcze trudniej A ventrilo.sh robisz tak: 1. nano ventrilo.sh (oczywiście w katalogu z serwerem) 2. wpisujesz: screen -A -m -d -S 1003 ./ventrilo_srv (i zapisujesz) 3. chmod 777 ventrilo.sh Udostępnij ten post Link to postu Udostępnij na innych stronach
ventrilo123 0 Zgłoś post Napisano Marzec 13, 2011 dalej mi się odpala jako screen a nie jako 1003 Udostępnij ten post Link to postu Udostępnij na innych stronach
Biszkopcik 37 Zgłoś post Napisano Marzec 14, 2011 (edytowany) Skrypt BASH: #!/bin/sh server_start() { if [ -z "$(screen -ls | grep [NAZWA_SCREENA])" ]; then cd [sCIEZKA] screen -dmS [NAZWA_SCREENA] ./ventrilo_srv else sleep 0 fi } server_restart() { if [ "$(screen -ls | grep [NAZWA_SCREENA])" ]; then screen -dr [NAZWA_SCREENA] -X quit sleep 1 cd [sCIEZKA] && screen -dmS [NAZWA_SCREENA] ./ventrilo_srv else sleep 0 fi } server_stop() { if [ "$(screen -ls | grep [NAZWA_SCREENA])" ]; then screen -dr [NAZWA_SCREENA] -X quit else sleep 0 fi } case "$1" in 'start') server_start ;; 'restart') server_restart ;; 'stop') server_stop ;; *) echo "usage $0 start|restart|stop" esac Skrypt PHP: <?php shell_exec("cd [sCIEZKA] && ./panel.sh [sTART/STOP/RESTART]"); ?> Jeżeli przerobisz, powinno działać lecz tego nie gwarantuje - pisane w nocy W zupełności powinno tobie wystarczyć. Edytowano Marzec 14, 2011 przez HyperHost - Support (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
ventrilo123 0 Zgłoś post Napisano Marzec 14, 2011 (edytowany) HyperHost - Support Działa tylko włącz a jak chcę wyłączyć to jest 123vm:/var/www/123# ./s.sh stop No screen session found. Mam debiana 5 Edytowano Marzec 14, 2011 przez ventrilo123 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Biszkopcik 37 Zgłoś post Napisano Marzec 14, 2011 Walnij w cytat caly przerobiony przez ciebie skrypt, zobacze co jest zle. Udostępnij ten post Link to postu Udostępnij na innych stronach
ventrilo123 0 Zgłoś post Napisano Marzec 14, 2011 #!/bin/sh server_start() { if [ -z "$(screen -ls | grep 1003)" ]; then cd /home/serwery/ventrilo/1003 screen -dmS 1003 ./ventrilo_srv else sleep 0 fi } server_restart() { if [ "$(screen -ls | grep 1003)" ]; then screen -dr 1003 -X quit sleep 1 cd /home/serwery/ventrilo/1003 && screen -dmS 1003 ./ventrilo_srv else sleep 0 fi } server_stop() { if [ "$(screen -ls | grep 1003)" ]; then screen -dr 1003 -X quit else sleep 0 fi } case "$1" in 'start') server_start ;; 'restart') server_restart ;; 'stop') server_stop ;; *) echo "usage $0 start|restart|stop" esac Udostępnij ten post Link to postu Udostępnij na innych stronach
Biszkopcik 37 Zgłoś post Napisano Marzec 14, 2011 './s.sh stop' wklepujesz z tego samego konto co './s.sh start' ? Udostępnij ten post Link to postu Udostępnij na innych stronach
ventrilo123 0 Zgłoś post Napisano Marzec 14, 2011 (edytowany) tak, przez putty przez konto root Edytowano Marzec 14, 2011 przez ventrilo123 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
ventrilo123 0 Zgłoś post Napisano Marzec 14, 2011 dalej odpala się z nazwą 'screen' może mi się coś zepsuło ?? Udostępnij ten post Link to postu Udostępnij na innych stronach
Biszkopcik 37 Zgłoś post Napisano Marzec 14, 2011 (edytowany) Dlaczego uważasz że odpala Ci z nazwą screen? Przecież jest wyraźnie 1003. Inaczej przez screena sie nie da. A żeby Ci to udowodnić wpisz screen -x 1003 i zobacz że otworzy wcześniej schowany screen ventrilo. Edytowano Marzec 14, 2011 przez HyperHost - Support (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
ventrilo123 0 Zgłoś post Napisano Marzec 14, 2011 nie otwiera mi się wcześniej schowany screen 123vm:/home/serwery/hltv/mirror# screen -x 1003There is no screen to be attached matching 1003. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Marzec 14, 2011 Używaj HTOP Tam masz ładnie wszystkie procesy opisane. W ps -ae masz tylko ogólnie jako screen odpalony bo to jest proces screena (bez nazwy - portu). W HTOP masz normalnie wszystko. W ps -ae serwer jest odpalony jako ventrilo_srv Udostępnij ten post Link to postu Udostępnij na innych stronach
ventrilo123 0 Zgłoś post Napisano Marzec 15, 2011 to co mam zrobić, zeby to działało ? Udostępnij ten post Link to postu Udostępnij na innych stronach
SanKen 63 Zgłoś post Napisano Czerwiec 20, 2011 A ja pozwolę sobie odświeżyć. Jak zrobić by apache wykonując skrypt podobny do tego: <?php shell_exec("cd [sCIEZKA] && ./panel.sh [sTART/STOP/RESTART]"); ?> Wykonywał go nie w www-data a na innym użytkowniku? Proszę o odpowiedz. Pozdrawiam. Szukałem coś o su user password Ale nic nie znalazłem jak by ktoś mógł jak to wykonać będzie wdzięczny. Napisałem maly panel do uruchamiania BigBrotherbot i teamspeak3,ale potrzebuję tej zmiany. 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
HaPe 242 Zgłoś post Napisano Czerwiec 20, 2011 A nie lepiej libssh2 wykorzystać? Udostępnij ten post Link to postu Udostępnij na innych stronach