Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Php->Bash->Php
Forum PHP.pl > Forum > PHP
politech
Hej,
mam problem ponieważ chce z poziomu php wywołać skrypt basha, który listuje mi dostępne sieci, chciałbym aby te dane były później wyświetlone na stronie. I niespecjalnie wiem jak to zrobic:
  1. <?php
  2. $result=shell_exec("/testy/skrypt.sh");
  3. echo($result);
  4. ?>

takie wywołanie dla skryptu, który wykonuje kilkakrotnie czynność echo nie wyświetla nic...
melkorm
a wpisz w konsoli
Kod
/testy/skrypt.sh


i zobacz sobie output, a może powinno być
Kod
sh /testy/skrypt.sh

?
IceManSpy
To może zapisz wynik w skrypcie do pliku, a potem przez php otwórz ten plik i odpowiednio go przeparsuj?
uupah5
proces apacza ma uprawnienia do uruchomienia tego skryptu?
poza tym, tak jak pisał kolega, czy sam skrypt z konsoli daje wyniki na stdout?
politech
-skrypt z konsoli rzuca za pomocą echo wyniki(z tym ze kilkakrotnie jest wywolywane echo).
-skrypt ma możliwość wykonywania na wszystkich możliwych userach
-server to nie apach tylko lighttpd
-chciałbym uniknąć narzutu spowodowanego zapisaniem wyników do pliku i analizy ich z poziomu php, jezli jest to możliwe i sensowne
Fifi209
A możesz pokazać ten skrypt bash'a ?
politech
  1. #!/bin/sh
  2. iwlist scan > /tmp/scan.txt 2>/dev/null
  3. a=0;b=0;x=0
  4.  
  5. while read line;do
  6. [ "`echo $line | grep ESSID`" ]`echo "$line" | cut -d : -f 2` && ((a++))
  7.  
  8. [ "`echo $line | grep Address`" ] `echo "$line" | awk '{print $5}'` && ((b++))
  9.  
  10. done < /tmp/scan.txt

oto i on
uupah5
Cytat(politech @ 14.06.2011, 09:52:07 ) *
[ "`echo $line | grep ESSID`" ]`echo "$line" | cut -d : -f 2` && ((a++))
[ "`echo $line | grep Address`" ] `echo "$line" | awk '{print $5}'` && ((b++))


u mnie powyższe linie dają błąd:
[: missing `]'

jak zostawiam samo
echo $line | grep ESSID
to wywołanie skryptu php daje prawidłowy wynik, zwrócony przez sh
Fifi209
Może się mylę, ale zapisujesz i tak do pliku. Nie możesz po prostu uruchomić tej komendy z poziomu php?
politech
uupah5: kwestia róznic w powłokach być może, ja używam podstawowego Bourn Shella na ash'u
Fifi209: poki co jest tworzony plik ale chciałem później zaimplementować rozwiązanie bez niego.
uupah5
Cytat(politech)
uupah5: kwestia róznic w powłokach być może, ja używam podstawowego Bourn Shella na ash'u

u mnie /bin/sh -> bash

możesz dokładniej zlokalizować problem?
zacznij od tego podstawowych, atomowych kroków, cytując manual:
  1. $output = shell_exec('ls -lart');
  2. echo "<pre>$output</pre>";


na razie nie wiadomo czy problem jest w wyświetlaniu, czy w wykonywaniu, czy w shellu.

btw coś się zmienia jak uruchamiasz php w cmd?


politech
w czwartek bedę miał urządzenie, na którym to odpalam wtedy posprawdzam co jest nie tak i napisze.
grOm
nie chce mi się szukać ale takie coś się robiło po przez ob_start łapało się output komendy systemowej do zmiennej
politech
napisałem mały skrypt pod winde:
  1. @echo raz
  2. @echo dwa
  3. @echo raz
  4. @echo dwa
  5. @echo raz
  6. @echo dwa
  7. @echo raz
  8. @echo dwa
  9. @echo raz
  10. @echo dwa
  11. @echo raz
  12. @echo dwav
  13. @echo raz
  14. @echo dwa

i dla index.php:
  1. <?php
  2.  
  3. $output = shell_exec('C:\Users\prpo\Desktop\raz.bat');
  4. echo "<pre>$output</pre>";
  5.  
  6.  
  7. ?>

wyświetla mi ładnie, więc problem nie leży w metodzie a w skrypcie być moze albo w scieżce. Jak tylko dobiore się do urządzenia dam znać.
madgon
odświeżam temat bo moje pytanie jest podobne
w/w przykład u mnie działa ale czy da się w ten sposób zrobić ale w formie przycisków questionmark.gif


guzik 1 - komena 1
guzik 2 - komenda 2
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.