Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: łączenie z ssh z poziomu php
Forum PHP.pl > Forum > PHP
kubek15
Witam

Chcę na stronie mieć pewien przycisk i po jego kliknięciu na vps'ie uruchamia mi się serwer do gry, a potem jak klikne inny to się wyłącza. Z vps'em komendy wpisuje przez ssh i wszystko gra ale jak to zrobić na stronie żeby wpisywać te komendy?
Mam wgrany moduł ssh2 na serwie i taki oto kod gotowy z jakiejś strony

w zmiennych $password i $server są parametry serwera i port 33222

  1. if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
  2. // log in at server1.example.com on port 22
  3. if(!($con = ssh2_connect($server, 33222))){
  4. echo "fail: unable to establish connection\n";
  5. } else {
  6. // try to authenticate with username root, password secretpassword
  7. if(!ssh2_auth_password($con, "root", $password)) {
  8. echo "fail: unable to authenticate\n";
  9. } else {
  10. // allright, we're in!
  11. echo "okay: logged in...\n";
  12.  
  13. // execute a command
  14. if (!($stream = ssh2_exec($con, "ls" ))) {
  15. echo "fail: unable to execute command\n";
  16. } else {
  17. // collect returning data from command
  18. stream_set_blocking($stream, true);
  19. $data = "";
  20. while ($buf = fread($stream,4096)) {
  21. $data .= $buf;
  22. }
  23. fclose($stream);
  24. }
  25. }
  26. }


w kodzie nie wywala błędów na ekranie wypisze mi okay: logged in... i tyle . Czyli wychodziło by na to ze nie przekazuje mi na ekran wyniku czyli pewnie komenda się nie wykonuje. Co może być źle ?
camikazee
Gdybyś choć troszkę znał się na PHP i zajrzał do manuala, to byś wiedział co robią poszczególne komendy. Wywołujesz po stronie serwera polecenie "ls", wynik zapisywany jest do zmiennej $data, której nawet zawartości nie sprawdzasz. Kolejną sprawą jest, fakt, iż komendą "ls" nie uruchamiasz serwera tylko wyświetlasz zawartość katalogu. Podpowiem tylko, że gdybyś zamiast ls wpisał komendę startową serwera, to by wynik był inny. Oczywiście aby ją wywołać, musisz się najpierw znajdywać tam, gdzie plik uruchomieniowy gry.
kubek15
dzięki za odpowiedz. już to czaje bo szukałem gotowca i niehciało mi sie ani sprawdzac manula ani samemu coś pisać po prostu na szybko chciałem gotowiec .
Napisałem już po swojemu , wszystko śmiga.

Ale jest jeden problem bo jak wpisuje komendy , lub kilka komend to wypisuje wszystko to co lub robi się na serwie to co chce, ale jest problem zkomendą screen
przykład
  1. ssh2_exec($con, "screen -ls")

wypisz mi aktywne screeny
a
  1. ssh2_exec($con, "screen -r serwer")

powiedzmy ze mam otwarty serwer o nazwie mine to wypisze Must be connected to a terminal. a przecież jestem zalogowany.
Pomóżcie bo na putty jak wpisze screen-r serwer i dam enter to przenosi mnie i potem daje komende np. stop ub save to kończy lub zapisuje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.