Łączenie się do SSH w PHP

Pytania i problemy
MTGmati
MTGmati

Jak mogę połączyć się do SSH za pomocą PHP aby wysłać polecenie uruchamiające skript?

Infinity
Infinity

PHP ma funkcje:

shell_exec("ADRES SKRYPTU.sh");

Możesz mieć ją wyłączoną, w konfiguracji PHP.

skilx
skilx

O ile masz na myśli połączenie z zewnętrznym serwerem, to może ci pomóc:

$serwer = "IP"; $login = "NAZWA UŻYTKOWNIKA"; $haslo = "HASŁO DO UŻYTKOWNIKA"; $komenda = 'KOMENDA DO WYKONANIA' $polaczenie = ssh2_connect($serwer, 22); ssh2_auth_password($polaczenie, $login, $haslo); $stream = ssh2_exec($polaczenie, $komenda); stream_set_blocking($stream, true); $wynik = stream_get_contents($stream);

Ta metoda potrzbuję rozszerzenia SSH2 od PHP.

apt-get install php-ssh2

MTGmati
MTGmati

Otrzymuje następujący błąd: PHP Parse error: syntax error, unexpected '$polaczenie' (T_VARIABLE)

skilx
skilx

Ups, mała poprawka. Zapomniałem ' ; ' na jednej linice. (Ciężko pisać kod telefonem :kappa:) Oto poprawny kod:

$serwer = “IP”; $login = “NAZWA UŻYTKOWNIKA”; $haslo = “HASŁO DO UŻYTKOWNIKA”; $komenda = ‘KOMENDA DO WYKONANIA’; $polaczenie = ssh2_connect($serwer, 22); ssh2_auth_password($polaczenie, $login, $haslo); $stream = ssh2_exec($polaczenie, $komenda); stream_set_blocking($stream, true); $wynik = stream_get_contents($stream);

MTGmati
MTGmati

Poprawiłem i mam następujący błąd:

  1. PHP Warning: ssh2_exec(): Connection not authenticated in
  2. PHP Warning: stream_set_blocking() expects parameter 1 to be resource, boolean given
skilx
skilx

:thinking: ... :thinking: :thinking: ...

Zauważyłem że forum koduję znak ' " ' na ' ' znak podczas pisania kodu jako cytat. Uwież mi jest różnica. Zostawię to panu @SystemZ do rozwiązania.

Tutaj masz najprawdopodobnie działający kod 😂 https://pastebin.com/raw/nxvBXHi6

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

bo ty pakujesz kod w cytat, to nie działa 😉

musisz zrobić tak: ```php kod ```

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.