Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ssh2_exec - wyświetlenie pliku
Forum PHP.pl > Forum > PHP
lanceq
  1. <?php
  2. $sciezka = "tutaj sciezka jest";
  3. $polaczenie = ssh2_connect("localhost", 22);
  4. ssh2_auth_password($polaczenie, "tutaj nazwa", "tutaj haselko");
  5. $polecenie = "tail -n 15 output.log";
  6. $stream = ssh2_exec($polaczenie, $polecenie);
  7. if($stream) {echo "<pre>$polecenie</pre>";}
  8.  
  9. ?>


Witam serdecznie, przypadkowo natknąłem się na to forum i wydaje się być tu całkiem fajnie, chyba tu zostanę na dłużej, ale do rzeczy, chcę za pomocą ssh2_exec outputnąć pewien plik tekstowy lecz niestety zamiast outputnąć zawartość polecenia wyświetlania "tail -n 15 output.log" a powinno wyświetlać ostatnich 15 linijek pliku output.log

Czemu to nie trybi ?
Pozdrawiam
Tajgeer
Dziwisz się, że wyświetla Ci polecenie zamiast wyniku ssh2_exec? Sprawdź, czy użyłeś dobrej zmiennej ]:->
lanceq
No jakbym się nie dziwił to bym chyba tutaj tematu nie zakładał, nieprawdaż smile.gif ?

Co do zmiennej to próbowałem wyświetlać też $stream, ale pojawia się wtedy "Resource id #3".
Tajgeer
stream_get_contents
lanceq
  1.  
  2. <?php
  3. $sciezka = "";
  4. $polaczenie = ssh2_connect("localhost", 22);
  5. ssh2_auth_password($polaczenie, "", "");
  6. $polecenie = "tail -n 15 output.log";
  7. $stream = ssh2_exec($polaczenie, $polecenie);
  8. if($stream) {echo stream_get_contents($stream);
  9. fclose($stream);
  10. }
  11. ?>


Nie wyświetla nic, gdzie popełniłem błąd?
Tajgeer
Zauważ, że ssh2_exec, w przypadku powodzenia nie zwraca true, lecz strumień.
Cytat("http://php.net/manual/en/function.ssh2-exec.php")
Returns a stream on success or FALSE on failure.

Twój warunek powinien wyglądać, np:
  1. if ($stream !== false)
  2. {
  3. // powodzenie
  4. }
lanceq
Wygląda to tak:

  1. $sciezka = "";
  2. $polaczenie = ssh2_connect("localhost", 22);
  3. ssh2_auth_password($polaczenie, "", "");
  4. $polecenie = "tail -n 15 output.log";
  5. $stream = ssh2_exec($polaczenie, $polecenie);
  6. if ($stream !== false) {echo stream_get_contents($stream);}


Zrobiłem wg. tego co napisałeś lecz dalej nic nie pokazuje.
Tajgeer
Raportowanie błędów włączone?

  1. ini_set('display_errors', 1);


Jeśli nie wyświetli nic, sprawdz error.log.
lanceq
W error.log nic co by dotyczyło tego błędu, tak samo gdy włącze reportowanie błędów.
lanceq
Wygląda to tak:
  1. if ($stream !== false) {echo stream_set_blocking($stream, true); stream_get_contents($stream);}
I wyświetla się 1.
Tajgeer
  1. echo stream_set_blocking($stream, true);

Że co? tongue.gif

  1. if ($stream !== false)
  2. {
  3. stream_set_blocking($stream, true);
  4. echo stream_get_contents($stream);
  5. }

Jeśli nie wyświetla, tzn. że ssh2_exec zwraca false.
Zastosuj się do drugiej notatki z http://php.net/manual/en/function.ssh2-exec.php#usernotes i odczytaj błąd.
Podejrzewam, że problem leży w tym, że nie podałeś bezwzględnej ścieżki do output.log, zwraca błąd (plik nie istnieje), przez co ssh2_exec zwraca false.
lanceq
No pisałeś przed chwilą żeby dodać {echo stream_set_blocking($stream, true); przed stream_get_contents
Więc tak tez uczyniłem, co mam robić bo wyświetla 1 tongue.gif

@EDIT

  1. $sciezka = "";
  2. $polaczenie = ssh2_connect("localhost", 22);
  3. ssh2_auth_password($polaczenie, "", "");
  4. $polecenie = "tail -n 15 output.log";
  5. $stream = ssh2_exec($polaczenie, $polecenie);
  6. if ($stream !== false)
  7. {
  8. stream_set_blocking($stream, true);
  9. echo stream_get_contents($stream);
  10. }


Dalej nic nie wyświetla
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.