Nowe posty

Autor Wątek: Zwracanie wartości przez skrypty shella  (Przeczytany 3399 razy)

politech

  • Gość
Zwracanie wartości przez skrypty shella
« dnia: 2011-06-13, 14:34:40 »
Hej,
chciałbym z poziomu php wywołać skrypt który wypisuje mi wszystkie dostępne sieci i ich adresy, tak aby poźniej te info wykorzystać na stronie...ale nie wiem jak to zrobić aby zadziałało:

$result=shell_exec("/testy/skrypt.sh");
echo($result);
?>

politech

  • Gość
Zwracanie wartości przez skrypty shella
« Odpowiedź #1 dnia: 2011-06-24, 10:29:49 »
nie chodzi mi o polecenie w skrypcie(które tak nawiasem mówiąc to iwlist scan a nie ifconfig) ale o metode, dzięki której strumien który jest kierowany normalnie na terminal będzie przypisany do zmiennej php.
Czyli w php wywlouje:

$output = shell_exec('/usr/list.sh');
dzie list.sh wyglada tak:

#!/bin/sh
iwlist scan
i to nie dziala. outupt jest pusty a wyniki leca na terminal. Chcialbym aby wyniki byly w output a pusty byl terminal

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Zwracanie wartości przez skrypty shella
« Odpowiedź #2 dnia: 2011-06-24, 10:52:31 »
iwlist daje wynik na stderr, natomiast shell_exec zwraca wyjście ze stdout (w tej chwili nie jestem w stanie powiedzieć, czy istnieje możliwość przekierowania stderr). I w tym problem.

iwlist scan > stdout.txt
iwlist scan &> stderr.txt
Musisz przekierować stderr na stdout, ewentualnie przekierować stderr do pliku i z niego czytać.
Poniższy kod przekierowuje stderr(2) na stdout(1) (może da się to zrobić prościej). Jeżeli władujesz go do list.sh, to powinno zadziałać i shell_exec zwróci wartość.

iwlist scan 2>&1 | cat

politech

  • Gość
Zwracanie wartości przez skrypty shella
« Odpowiedź #3 dnia: 2011-06-24, 11:34:17 »
dzięki dokładnie o to mi chodziło