PHP, wykonywanie polece

Potrzebujesz pomocy z C, C++, perl, python, itp.
czipas
Posty: 3
Rejestracja: 15 marca 2008, 18:55

PHP, wykonywanie poleceń przez ssh2()

Post autor: czipas »

Witam.

Próbuję napisać skrypt PHP z wykorzystaniem ssh2_exec(), dzięki któremu mogę podglądać zawartość programu screen ale nie tylko! Mogę również wysłać do niego dowolnym poleceniem, co do niedawna wydawało mi się niemożliwe. Przeszukałem całe Google i wszędzie informują, że potrzebny do tego jest terminal, że z php tego nie zrobię i tak dalej. Ale jednak, udało się.

Teraz jednak pojawia się jeden problem.
Polecenie, które wstawia polecenie do programu screen działa przez ssh2_exec() tylko i wyłącznie jeśli uprzednio chociaż raz otworzę program screen przez terminal (przez putty lub inny program). Jeśli tego nie zrobię mój skrypt nie działa. Nie mam pojęcia dlaczego tak się dzieje. Poniżej zamieszczam kod skryptu PHP.
[php]$wykonaj = $_POST[wykonaj];
$cmd = "screen -r PID -X eval \"stuff '$wykonaj'\\012\"";
ssh2_exec($con, $cmd);[/php]
Jeżeli ktoś ma pojęcie dlaczego takie coś się dzieje proszę o pomoc
Czocher
Beginner
Posty: 140
Rejestracja: 26 maja 2007, 23:19

Post autor: Czocher »

man screen pisze:-r [pid.tty.host]
-r właścicielsesji/[pid.tty.host]
wznawia odłączoną sesję screen. Nie można podawać żadnych innych opcji (poza kombinacjami z -d/-D), choć może być wymagany opcjonalny prze‐
drostek [pid.]tty.host (w celu rozróżnienia wielu odłączonych sesji screen). Druga postać jest używana do podłączenia do sesji screen innego
użytkownika, który pracuje w trybie wieloużytkownikowym. Oznacza to, że screen powinien szukać sesji w katalogu innego użytkownika. Wymaga to
setuid-root.
Nie ma aktywnej sesji, nie ma opcji "-r". Przynajmniej na to wychodzi.
A jak przeczytamy troszkę dalej:
man screen pisze:-R próbuje wznowić pierwszą odłączoną sesję screen, którą znajdzie. Po sukcesie wszystkie inne opcje linii komend są ignorowane. Jeśli żadna z
odłączonych sesji nie istnieje, uruchamiana jest nowa sesja z użyciem podanych opcji, zupełnie jakby -R nie zostało podane. Opcja ta jest ustaw‐
iana domyślnie gdy screen jest uruchamiany jako powłoka zgłoszeniowa.
Odpowiedź nasuwa się sama - użyj opcji "-R", powinno działać ;) .
czipas
Posty: 3
Rejestracja: 15 marca 2008, 18:55

Post autor: czipas »

Duże R zamiast małego nie pomogło... nadal muszę przynajmniej raz otworzyć screena przez terminal.
ODPOWIEDZ