Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pingowanie ip:port
Forum PHP.pl > Forum > PHP
modern-web
Witam wszystkich!
Mam pewien problem związany ze skryptem pingowania danego adresu IP oraz portu.
Napisałem taki oto fragment:
  1. $ping = system('ping '.$ip.':80 -t -l 80 -n 1 -w 1000');

ale niestety gdy wgram go na serwer z systemem operacyjnym Linux, skrypt nie działa. Nie zwraca nawet błędu...

Wie ktoś może dlaczego na serwerach z systemem operacyjnym Windows działa, natomiast Linux nie ;/?
Domyślam się, że to coś z system() ale wolę poruszyć ten temat z Wami smile.gif

Pozdrawiam!

P.S.
Dodam jeszcze, że na localhost zwraca mi 0ms - więc niby działa :0
CuteOne
  1. $ping = system('ping '.$ip.':80 -t -l 80 -n 1 -w 1000', $var);
  2.  
  3. echo '<pre>';
  4. echo var_dump($var);
  5. echo '</pre>';
  6.  


2. sprawdź czy masz włączony safe_mode http://pl2.php.net/system
3. z tego co pamiętam adres ip powinien iść na końcu? (może się mylę smile.gif)
modern-web
safe_mode wyłączony ...


Cytat
safe_mode Off Off
safe_mode_exec_dir no value no value
safe_mode_gid Off Off
safe_mode_include_dir no value no value


Edit:

Cytat
3. z tego co pamiętam adres ip powinien iść na końcu? (może się mylę )

Poszedł na koniec - nic to nie zmieniło ;/

Edit2:
Znalazłem coś interesującego!

Cytat
disable_functions dl,exec,shell_exec,system,passthru,popen,symlink,link,set_time_limit,proc_open,p
roc_close,posix_getpwuid,openlog,glob,disk_free_space,disk_total_space,diskfreesp
ace dl,exec,shell_exec,system,passthru,popen,symlink,link,set_time_limit,proc_open,p
roc_close,posix_getpwuid,openlog,glob,disk_free_space,disk_total_space,diskfreesp
ace


W jaki sposób mogę zmienić plik php.ini jeśli nigdzie na serwerze go nie widzę ;|?
Jak coś nie jest to darmowy hosting smile.gif Płacę za ten serwer spore pieniądze ;0
mandragorek
Ping na Linuksa i na Windowsa ma trochę inne opcje lini poleceń, zajrzyj do manula czego będziesz potrzebował. Nie spotkałem się też z pingowaniem portu, więc może oprócz zmiany opcji spróbuj bez tego :80 na końcu.
Zaś co do modyfikacji php.ini to zostaje prawdopodobnie tylko kontakt z firmą utrzymującą serwer.
modern-web
Bez portu także próbowałem...
Zmienna $ping zwraca NULL = coś jest między skryptem a serwerem.
Na localhost działa mi bez zarzutów, więc jedyne co pozostało to blokada po stronie serwera.

Napisałem już wiadomość do administratorów hostingu. Zobaczymy co odpiszą...

W każdym razie... Może znacie jakiekolwiek inne sposoby na zmierzenie pingu ;d?
Z chęcią wysłucham Waszych propozycji.
CuteOne
skoro masz serwer na własność ściągnij nmap ;] i sprawdz czy z nim ci pojdzie

komenda to chyba

nmap -sP pingowane_ip
kiler129
Używanie system() do tego to jak armata na wróbla.
Zapoznaj się z tym jak działa ICMP oraz http://php.net/manual/en/function.socket-create.php winksmiley.jpg

Przykładowy kod niezależny od platformy:
  1. <?PHP
  2. function ping($host, $timeout = 1) {
  3. /* ICMP ping packet with a pre-calculated checksum */
  4. $package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
  5. $socket = socket_create(AF_INET, SOCK_RAW, 1);
  6. socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
  7. socket_connect($socket, $host, null);
  8.  
  9. $ts = microtime(true);
  10. socket_send($socket, $package, strLen($package), 0);
  11. if (socket_read($socket, 255))
  12. $result = microtime(true) - $ts;
  13. else $result = false;
  14. socket_close($socket);
  15.  
  16. return $result;
  17. }
  18. ?>


edit: No, jeszce nmapa użyjcie i może php na roocie ... ludzie!
md1988
Zastanawia mnie tylko po co Ci pingowanie konkretnego portu. Na ping odpowiada komputer, nie aplikacja nasłuchująca na konkretnym porcie. Jeśli chcesz sprawdzić czy pod danym portem funkcjonuje usługa(np. ssh pod portem 22) to badaj to próbując ustanowić połączenie na określony port.
marcio
Mozna tez pingowac funckja fsockopen() i stream'em dla plikow w php.
A jak nie odblokuj sobie system/exec/shell_exec i bedzie hulalo.
modern-web
Potrafiłbyś przytoczyć pewien przykład?
Manual za dużo mi nie podpowiedział...
marcio
http://www.zbt.mtvk.pl/?code,ddos.php.txt
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.