peres.pro 9 Zgłoś post Napisano Lipiec 1, 2012 (edytowany) Witam to znowu ja mam pytanka odnośnie ssh2 w php. OS: debian 6 1.Oto kawałek kodu if($_GET[save]=="do"){ $polecenie = "killall -HUP theforgottenserver"; $stream = ssh2_exec($polaczenie, $polecenie); if($stream) {echo "Save zostal wykonany pomyslnie.";} exit; } I chciałbym zrobić taki myk aby to polecenie mogło się zrobić tylko wtedy gdy proces "theforgottenserver" jest uruchomiony a jeżeli nie to wyświetla jakąś opowiedz i tego nie robi. 2. Chciałbym żeby za pomocą ssh2 outputnąć sobie ostatnie 20 linijek procesu "theforgottenserver" który jest na screenie, jak to miało by wyglądać ? Edytowano Lipiec 1, 2012 przez lanceq (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
HaPe 242 Zgłoś post Napisano Lipiec 2, 2012 Jeśli chcesz sprawdzić czy polecenie wykonało się poprawnie to pobieraj z basha zmienną $?, jeśli zwróci 0 to znaczy, że wykonano skrypt poprawnie, jeśli nie to najczęściej 1. Ewentualnie możesz także odpalać dany program na screen z konkretną nazwą i wtedy zabijać proces po nazwie. Udostępnij ten post Link to postu Udostępnij na innych stronach
Devias 8 Zgłoś post Napisano Lipiec 2, 2012 "chciałbym zrobić taki myk aby to polecenie mogło się zrobić tylko wtedy gdy proces "theforgottenserver" jest uruchomiony a jeżeli nie to wyświetla jakąś opowiedz i tego nie robi." Masz 2 możliwości np.: Bash lub sprawdzanie czy port działa i zrobić sobie warunek if($status == TRUE) {swoje polecenie}, Udostępnij ten post Link to postu Udostępnij na innych stronach
peres.pro 9 Zgłoś post Napisano Lipiec 2, 2012 Znaczy na port raczej nie mogę zrobić, chyba że da się to tak napisać że oprócz portu sprawdza też IP, aktualnie mam kilka takich serwerów odpalonych u siebie na tym samym porcie tylko na innym IP. Udostępnij ten post Link to postu Udostępnij na innych stronach
Devias 8 Zgłoś post Napisano Lipiec 4, 2012 Najłatwiejszy sposób w PHP: <?php $ip = '127.0.0.1'; $port = '80'; $socket=@fsockopen($ip,$port,$errno,$errstr,2); if($socket==true) // Działa {} else // Nie działa { $polecenie = "killall -HUP theforgottenserver"; $stream = ssh2_exec($polaczenie, $polecenie); if($stream) {echo "Save zostal wykonany pomyslnie.";} } ?> A teraz ostatnie 20 linijek mówisz - nie wiem jak to się pokazuję wiec daje na ciemno takie coś: $ip = '127.0.0.1'; $port = '80'; $sciezka = "/home/lanceq"; $polecenie = "cd ".$sciezka."; tail -n 20 ventrilo_srv.log"; $polaczenie = ssh2_connect($ip, $port); ssh2_auth_password($polaczenie, "root-login", "haslo"); $stream = ssh2_exec($polaczenie, $polecenie); if($stream) { stream_set_blocking($stream, true); echo stream_get_contents($stream); } Powinno być dobrze ale nie jestem pewny - polecenie sobie tylko zmień bo patrzyłem na ventrilo czy działa dobrze polecenie. Pozdrawiam. Udostępnij ten post Link to postu Udostępnij na innych stronach
peres.pro 9 Zgłoś post Napisano Lipiec 4, 2012 (edytowany) Wielkie dzięki Devias, widać jesteś tu jedyną osobą skorą do pomocy jeżeli chodzi o bash+php co się ceni, łap kilka punkciorów Edytowano Lipiec 4, 2012 przez lanceq (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach