Skocz do zawartości
peres.pro

ssh2 w php - pytanka

Polecane posty

Witam to znowu ja happy.png

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 przez lanceq (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

"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

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

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

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×